// export def_amount_of_siberit , def_public_score ; export is_depot , number_of_breastworks , number_of_people , skill_level , starting_crates , starting_resources , shipments_density , morale_decreasing_time , amount_of_apemen , amount_of_siberit , respawning_time_min , respawning_time_max , arabian_sheik , observe_game ; export Side_Teams , Teams ; export Side_Positions , Side_Nations , Team_Game ; export Position_Sides ; export depot_def , breastworks_def , start_def , normal_oil_deposits_locations , extra_oil_deposits_locations , normal_sib_deposits_locations , extra_sib_deposits_locations , battle_flags_id ; var commander ; var global_units , global_defined , soldiers_created ; var neng , nsci , nmech , nsol ; function read_multiplayer_and_game_parameters ; var i , tech_level ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
   4: PPUSH
// if Multiplayer then
   5: LD_OWVAR 4
   9: IFFALSE 73
// begin Game_Type := mp_game_type ;
  11: LD_ADDR_EXP 31
  15: PUSH
  16: LD_OWVAR 6
  20: ST_TO_ADDR
// Your_Side := mp_player_side ;
  21: LD_ADDR_OWVAR 2
  25: PUSH
  26: LD_OWVAR 7
  30: ST_TO_ADDR
// Side_Positions := mp_sides_positions ;
  31: LD_ADDR_EXP 19
  35: PUSH
  36: LD_OWVAR 17
  40: ST_TO_ADDR
// Side_Teams := mp_sides_teams ;
  41: LD_ADDR_EXP 17
  45: PUSH
  46: LD_OWVAR 15
  50: ST_TO_ADDR
// Side_Nations := mp_sides_nations ;
  51: LD_ADDR_EXP 20
  55: PUSH
  56: LD_OWVAR 16
  60: ST_TO_ADDR
// Teams := mp_teams ;
  61: LD_ADDR_EXP 18
  65: PUSH
  66: LD_OWVAR 12
  70: ST_TO_ADDR
// end else
  71: GO 269
// begin Game_Type := 1 ;
  73: LD_ADDR_EXP 31
  77: PUSH
  78: LD_INT 1
  80: ST_TO_ADDR
// Your_Side := 2 ;
  81: LD_ADDR_OWVAR 2
  85: PUSH
  86: LD_INT 2
  88: ST_TO_ADDR
// Side_Positions := [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ;
  89: LD_ADDR_EXP 19
  93: PUSH
  94: LD_INT 1
  96: PUSH
  97: LD_INT 2
  99: PUSH
 100: LD_INT 3
 102: PUSH
 103: LD_INT 4
 105: PUSH
 106: LD_INT 5
 108: PUSH
 109: LD_INT 6
 111: PUSH
 112: LD_INT 7
 114: PUSH
 115: LD_INT 8
 117: PUSH
 118: EMPTY
 119: LIST
 120: LIST
 121: LIST
 122: LIST
 123: LIST
 124: LIST
 125: LIST
 126: LIST
 127: ST_TO_ADDR
// Side_Teams := [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ;
 128: LD_ADDR_EXP 17
 132: PUSH
 133: LD_INT 1
 135: PUSH
 136: LD_INT 2
 138: PUSH
 139: LD_INT 3
 141: PUSH
 142: LD_INT 4
 144: PUSH
 145: LD_INT 5
 147: PUSH
 148: LD_INT 6
 150: PUSH
 151: LD_INT 7
 153: PUSH
 154: LD_INT 8
 156: PUSH
 157: EMPTY
 158: LIST
 159: LIST
 160: LIST
 161: LIST
 162: LIST
 163: LIST
 164: LIST
 165: LIST
 166: ST_TO_ADDR
// Side_Nations := [ 1 , 2 , 3 , 1 , 2 , 3 , 1 , 2 ] ;
 167: LD_ADDR_EXP 20
 171: PUSH
 172: LD_INT 1
 174: PUSH
 175: LD_INT 2
 177: PUSH
 178: LD_INT 3
 180: PUSH
 181: LD_INT 1
 183: PUSH
 184: LD_INT 2
 186: PUSH
 187: LD_INT 3
 189: PUSH
 190: LD_INT 1
 192: PUSH
 193: LD_INT 2
 195: PUSH
 196: EMPTY
 197: LIST
 198: LIST
 199: LIST
 200: LIST
 201: LIST
 202: LIST
 203: LIST
 204: LIST
 205: ST_TO_ADDR
// Teams := [ [ 1 ] , [ 2 ] , [ 3 ] , [ 4 ] , [ 5 ] , [ 6 ] , [ 7 ] , [ 8 ] ] ;
 206: LD_ADDR_EXP 18
 210: PUSH
 211: LD_INT 1
 213: PUSH
 214: EMPTY
 215: LIST
 216: PUSH
 217: LD_INT 2
 219: PUSH
 220: EMPTY
 221: LIST
 222: PUSH
 223: LD_INT 3
 225: PUSH
 226: EMPTY
 227: LIST
 228: PUSH
 229: LD_INT 4
 231: PUSH
 232: EMPTY
 233: LIST
 234: PUSH
 235: LD_INT 5
 237: PUSH
 238: EMPTY
 239: LIST
 240: PUSH
 241: LD_INT 6
 243: PUSH
 244: EMPTY
 245: LIST
 246: PUSH
 247: LD_INT 7
 249: PUSH
 250: EMPTY
 251: LIST
 252: PUSH
 253: LD_INT 8
 255: PUSH
 256: EMPTY
 257: LIST
 258: PUSH
 259: EMPTY
 260: LIST
 261: LIST
 262: LIST
 263: LIST
 264: LIST
 265: LIST
 266: LIST
 267: LIST
 268: ST_TO_ADDR
// end ; for i := 1 to 8 do
 269: LD_ADDR_VAR 0 2
 273: PUSH
 274: DOUBLE
 275: LD_INT 1
 277: DEC
 278: ST_TO_ADDR
 279: LD_INT 8
 281: PUSH
 282: FOR_TO
 283: IFFALSE 370
// if Multiplayer_GetPlayerIsSpec ( i ) then
 285: LD_VAR 0 2
 289: PPUSH
 290: CALL_OW 530
 294: IFFALSE 368
// begin Side_Positions := Replace ( Side_Positions , i , 0 ) ;
 296: LD_ADDR_EXP 19
 300: PUSH
 301: LD_EXP 19
 305: PPUSH
 306: LD_VAR 0 2
 310: PPUSH
 311: LD_INT 0
 313: PPUSH
 314: CALL_OW 1
 318: ST_TO_ADDR
// Teams := Replace ( Teams , Side_Teams [ i ] , Teams [ Side_Teams [ i ] ] diff i ) ;
 319: LD_ADDR_EXP 18
 323: PUSH
 324: LD_EXP 18
 328: PPUSH
 329: LD_EXP 17
 333: PUSH
 334: LD_VAR 0 2
 338: ARRAY
 339: PPUSH
 340: LD_EXP 18
 344: PUSH
 345: LD_EXP 17
 349: PUSH
 350: LD_VAR 0 2
 354: ARRAY
 355: ARRAY
 356: PUSH
 357: LD_VAR 0 2
 361: DIFF
 362: PPUSH
 363: CALL_OW 1
 367: ST_TO_ADDR
// end ;
 368: GO 282
 370: POP
 371: POP
// Position_Sides := [ 0 , 0 , 0 , 0 , 0 , 0 ] ;
 372: LD_ADDR_EXP 22
 376: PUSH
 377: LD_INT 0
 379: PUSH
 380: LD_INT 0
 382: PUSH
 383: LD_INT 0
 385: PUSH
 386: LD_INT 0
 388: PUSH
 389: LD_INT 0
 391: PUSH
 392: LD_INT 0
 394: PUSH
 395: EMPTY
 396: LIST
 397: LIST
 398: LIST
 399: LIST
 400: LIST
 401: LIST
 402: ST_TO_ADDR
// for i := 1 to 8 do
 403: LD_ADDR_VAR 0 2
 407: PUSH
 408: DOUBLE
 409: LD_INT 1
 411: DEC
 412: ST_TO_ADDR
 413: LD_INT 8
 415: PUSH
 416: FOR_TO
 417: IFFALSE 464
// if Side_Positions [ i ] then
 419: LD_EXP 19
 423: PUSH
 424: LD_VAR 0 2
 428: ARRAY
 429: IFFALSE 462
// Position_Sides := Replace ( Position_Sides , Side_Positions [ i ] , i ) ;
 431: LD_ADDR_EXP 22
 435: PUSH
 436: LD_EXP 22
 440: PPUSH
 441: LD_EXP 19
 445: PUSH
 446: LD_VAR 0 2
 450: ARRAY
 451: PPUSH
 452: LD_VAR 0 2
 456: PPUSH
 457: CALL_OW 1
 461: ST_TO_ADDR
 462: GO 416
 464: POP
 465: POP
// Team_Game := Side_Teams [ your_side ] ;
 466: LD_ADDR_EXP 21
 470: PUSH
 471: LD_EXP 17
 475: PUSH
 476: LD_OWVAR 2
 480: ARRAY
 481: ST_TO_ADDR
// if Multiplayer then
 482: LD_OWVAR 4
 486: IFFALSE 724
// begin def_base_level := GetMultiplayerSetting ( 0 ) ;
 488: LD_ADDR_EXP 33
 492: PUSH
 493: LD_INT 0
 495: PPUSH
 496: CALL_OW 426
 500: ST_TO_ADDR
// def_amount_of_people := GetMultiplayerSetting ( 1 ) ;
 501: LD_ADDR_EXP 34
 505: PUSH
 506: LD_INT 1
 508: PPUSH
 509: CALL_OW 426
 513: ST_TO_ADDR
// def_skill_level := GetMultiplayerSetting ( 2 ) ;
 514: LD_ADDR_EXP 35
 518: PUSH
 519: LD_INT 2
 521: PPUSH
 522: CALL_OW 426
 526: ST_TO_ADDR
// def_starting_resources := GetMultiplayerSetting ( 3 ) ;
 527: LD_ADDR_EXP 36
 531: PUSH
 532: LD_INT 3
 534: PPUSH
 535: CALL_OW 426
 539: ST_TO_ADDR
// def_shipments_density := GetMultiplayerSetting ( 4 ) ;
 540: LD_ADDR_EXP 37
 544: PUSH
 545: LD_INT 4
 547: PPUSH
 548: CALL_OW 426
 552: ST_TO_ADDR
// def_extra_oil_deposits := GetMultiplayerSetting ( 5 ) ;
 553: LD_ADDR_EXP 38
 557: PUSH
 558: LD_INT 5
 560: PPUSH
 561: CALL_OW 426
 565: ST_TO_ADDR
// def_extra_sib_deposits := GetMultiplayerSetting ( 6 ) ;
 566: LD_ADDR_EXP 39
 570: PUSH
 571: LD_INT 6
 573: PPUSH
 574: CALL_OW 426
 578: ST_TO_ADDR
// def_shared_vision := GetMultiplayerSetting ( 10 ) ;
 579: LD_ADDR_EXP 40
 583: PUSH
 584: LD_INT 10
 586: PPUSH
 587: CALL_OW 426
 591: ST_TO_ADDR
// def_morale_flags := GetMultiplayerSetting ( 11 ) ;
 592: LD_ADDR_EXP 41
 596: PUSH
 597: LD_INT 11
 599: PPUSH
 600: CALL_OW 426
 604: ST_TO_ADDR
// def_siberite_detection := GetMultiplayerSetting ( 12 ) ;
 605: LD_ADDR_EXP 42
 609: PUSH
 610: LD_INT 12
 612: PPUSH
 613: CALL_OW 426
 617: ST_TO_ADDR
// def_people_respawning := GetMultiplayerSetting ( 13 ) ;
 618: LD_ADDR_EXP 43
 622: PUSH
 623: LD_INT 13
 625: PPUSH
 626: CALL_OW 426
 630: ST_TO_ADDR
// def_amount_of_apemen := GetMultiplayerSetting ( 14 ) ;
 631: LD_ADDR_EXP 44
 635: PUSH
 636: LD_INT 14
 638: PPUSH
 639: CALL_OW 426
 643: ST_TO_ADDR
// def_amount_of_siberit := GetMultiplayerSetting ( 15 ) ;
 644: LD_ADDR_EXP 1
 648: PUSH
 649: LD_INT 15
 651: PPUSH
 652: CALL_OW 426
 656: ST_TO_ADDR
// def_public_score := GetMultiplayerSetting ( 16 ) ;
 657: LD_ADDR_EXP 2
 661: PUSH
 662: LD_INT 16
 664: PPUSH
 665: CALL_OW 426
 669: ST_TO_ADDR
// def_siberite_bomb := GetMultiplayerSetting ( 17 ) ;
 670: LD_ADDR_EXP 45
 674: PUSH
 675: LD_INT 17
 677: PPUSH
 678: CALL_OW 426
 682: ST_TO_ADDR
// def_builduptime := GetMultiplayerSetting ( 20 ) ;
 683: LD_ADDR_EXP 46
 687: PUSH
 688: LD_INT 20
 690: PPUSH
 691: CALL_OW 426
 695: ST_TO_ADDR
// def_game_rules := GetMultiplayerSetting ( 21 ) ;
 696: LD_ADDR_EXP 32
 700: PUSH
 701: LD_INT 21
 703: PPUSH
 704: CALL_OW 426
 708: ST_TO_ADDR
// tech_level = GetMultiplayerSetting ( 22 ) ;
 709: LD_ADDR_VAR 0 3
 713: PUSH
 714: LD_INT 22
 716: PPUSH
 717: CALL_OW 426
 721: ST_TO_ADDR
// end else
 722: GO 872
// begin Randomize ;
 724: CALL_OW 10
// def_base_level := 2 ;
 728: LD_ADDR_EXP 33
 732: PUSH
 733: LD_INT 2
 735: ST_TO_ADDR
// def_amount_of_people := 0 ;
 736: LD_ADDR_EXP 34
 740: PUSH
 741: LD_INT 0
 743: ST_TO_ADDR
// def_skill_level := 1 ;
 744: LD_ADDR_EXP 35
 748: PUSH
 749: LD_INT 1
 751: ST_TO_ADDR
// def_starting_resources := 2 ;
 752: LD_ADDR_EXP 36
 756: PUSH
 757: LD_INT 2
 759: ST_TO_ADDR
// def_shipments_density := 1 ;
 760: LD_ADDR_EXP 37
 764: PUSH
 765: LD_INT 1
 767: ST_TO_ADDR
// def_extra_oil_deposits := 0 ;
 768: LD_ADDR_EXP 38
 772: PUSH
 773: LD_INT 0
 775: ST_TO_ADDR
// def_extra_sib_deposits := 1 ;
 776: LD_ADDR_EXP 39
 780: PUSH
 781: LD_INT 1
 783: ST_TO_ADDR
// def_shared_vision := 1 ;
 784: LD_ADDR_EXP 40
 788: PUSH
 789: LD_INT 1
 791: ST_TO_ADDR
// def_morale_flags := 1 ;
 792: LD_ADDR_EXP 41
 796: PUSH
 797: LD_INT 1
 799: ST_TO_ADDR
// def_siberite_detection := 1 ;
 800: LD_ADDR_EXP 42
 804: PUSH
 805: LD_INT 1
 807: ST_TO_ADDR
// def_people_respawning := 2 ;
 808: LD_ADDR_EXP 43
 812: PUSH
 813: LD_INT 2
 815: ST_TO_ADDR
// def_amount_of_apemen := 3 ;
 816: LD_ADDR_EXP 44
 820: PUSH
 821: LD_INT 3
 823: ST_TO_ADDR
// def_amount_of_siberit := 0 ;
 824: LD_ADDR_EXP 1
 828: PUSH
 829: LD_INT 0
 831: ST_TO_ADDR
// def_public_score := 0 ;
 832: LD_ADDR_EXP 2
 836: PUSH
 837: LD_INT 0
 839: ST_TO_ADDR
// def_siberite_bomb := 0 ;
 840: LD_ADDR_EXP 45
 844: PUSH
 845: LD_INT 0
 847: ST_TO_ADDR
// def_builduptime := 0 ;
 848: LD_ADDR_EXP 46
 852: PUSH
 853: LD_INT 0
 855: ST_TO_ADDR
// def_game_rules := 0 ;
 856: LD_ADDR_EXP 32
 860: PUSH
 861: LD_INT 0
 863: ST_TO_ADDR
// tech_level = 7 ;
 864: LD_ADDR_VAR 0 3
 868: PUSH
 869: LD_INT 7
 871: ST_TO_ADDR
// end ; InitGameRules ;
 872: CALL 10210 0 0
// if def_game_rules = 0 then
 876: LD_EXP 32
 880: PUSH
 881: LD_INT 0
 883: EQUAL
 884: IFFALSE 923
// begin if Game_Type = 3 then
 886: LD_EXP 31
 890: PUSH
 891: LD_INT 3
 893: EQUAL
 894: IFFALSE 910
// tech_level = tech_level + 3 ;
 896: LD_ADDR_VAR 0 3
 900: PUSH
 901: LD_VAR 0 3
 905: PUSH
 906: LD_INT 3
 908: PLUS
 909: ST_TO_ADDR
// SetMpTechLevel ( tech_level + 1 ) ;
 910: LD_VAR 0 3
 914: PUSH
 915: LD_INT 1
 917: PLUS
 918: PPUSH
 919: CALL 1614 0 1
// end ; if ( Game_Type = 5 ) then
 923: LD_EXP 31
 927: PUSH
 928: LD_INT 5
 930: EQUAL
 931: IFFALSE 960
// begin def_base_level := 1 ;
 933: LD_ADDR_EXP 33
 937: PUSH
 938: LD_INT 1
 940: ST_TO_ADDR
// def_extra_oil_deposits := 0 ;
 941: LD_ADDR_EXP 38
 945: PUSH
 946: LD_INT 0
 948: ST_TO_ADDR
// def_extra_sib_deposits := 0 ;
 949: LD_ADDR_EXP 39
 953: PUSH
 954: LD_INT 0
 956: ST_TO_ADDR
// disable ( 10 ) ;
 957: LD_INT 10
 959: DISABLE_MARKED
// end ; is_depot := [ 0 , 1 , 1 ] [ def_base_level + 1 ] ;
 960: LD_ADDR_EXP 3
 964: PUSH
 965: LD_INT 0
 967: PUSH
 968: LD_INT 1
 970: PUSH
 971: LD_INT 1
 973: PUSH
 974: EMPTY
 975: LIST
 976: LIST
 977: LIST
 978: PUSH
 979: LD_EXP 33
 983: PUSH
 984: LD_INT 1
 986: PLUS
 987: ARRAY
 988: ST_TO_ADDR
// number_of_breastworks := [ 0 , 0 , 2 ] [ def_base_level + 1 ] ;
 989: LD_ADDR_EXP 4
 993: PUSH
 994: LD_INT 0
 996: PUSH
 997: LD_INT 0
 999: PUSH
1000: LD_INT 2
1002: PUSH
1003: EMPTY
1004: LIST
1005: LIST
1006: LIST
1007: PUSH
1008: LD_EXP 33
1012: PUSH
1013: LD_INT 1
1015: PLUS
1016: ARRAY
1017: ST_TO_ADDR
// number_of_people := [ 9 , 12 , 15 , 24 ] [ def_amount_of_people + 1 ] ;
1018: LD_ADDR_EXP 5
1022: PUSH
1023: LD_INT 9
1025: PUSH
1026: LD_INT 12
1028: PUSH
1029: LD_INT 15
1031: PUSH
1032: LD_INT 24
1034: PUSH
1035: EMPTY
1036: LIST
1037: LIST
1038: LIST
1039: LIST
1040: PUSH
1041: LD_EXP 34
1045: PUSH
1046: LD_INT 1
1048: PLUS
1049: ARRAY
1050: ST_TO_ADDR
// skill_level := [ 2 , 3 , 4 , 5 ] [ def_skill_level + 1 ] ;
1051: LD_ADDR_EXP 6
1055: PUSH
1056: LD_INT 2
1058: PUSH
1059: LD_INT 3
1061: PUSH
1062: LD_INT 4
1064: PUSH
1065: LD_INT 5
1067: PUSH
1068: EMPTY
1069: LIST
1070: LIST
1071: LIST
1072: LIST
1073: PUSH
1074: LD_EXP 35
1078: PUSH
1079: LD_INT 1
1081: PLUS
1082: ARRAY
1083: ST_TO_ADDR
// if ( Game_Type = 5 ) then
1084: LD_EXP 31
1088: PUSH
1089: LD_INT 5
1091: EQUAL
1092: IFFALSE 1210
// begin starting_resources := [ [ 1000 , 100 , 100 ] , [ 2000 , 200 , 200 ] , [ 5000 , 500 , 500 ] , [ 10000 , 1000 , 1000 ] , [ 25000 , 2500 , 2500 ] , [ 50000 , 5000 , 5000 ] ] [ def_starting_resources + 1 ] ;
1094: LD_ADDR_EXP 8
1098: PUSH
1099: LD_INT 1000
1101: PUSH
1102: LD_INT 100
1104: PUSH
1105: LD_INT 100
1107: PUSH
1108: EMPTY
1109: LIST
1110: LIST
1111: LIST
1112: PUSH
1113: LD_INT 2000
1115: PUSH
1116: LD_INT 200
1118: PUSH
1119: LD_INT 200
1121: PUSH
1122: EMPTY
1123: LIST
1124: LIST
1125: LIST
1126: PUSH
1127: LD_INT 5000
1129: PUSH
1130: LD_INT 500
1132: PUSH
1133: LD_INT 500
1135: PUSH
1136: EMPTY
1137: LIST
1138: LIST
1139: LIST
1140: PUSH
1141: LD_INT 10000
1143: PUSH
1144: LD_INT 1000
1146: PUSH
1147: LD_INT 1000
1149: PUSH
1150: EMPTY
1151: LIST
1152: LIST
1153: LIST
1154: PUSH
1155: LD_INT 25000
1157: PUSH
1158: LD_INT 2500
1160: PUSH
1161: LD_INT 2500
1163: PUSH
1164: EMPTY
1165: LIST
1166: LIST
1167: LIST
1168: PUSH
1169: LD_INT 50000
1171: PUSH
1172: LD_INT 5000
1174: PUSH
1175: LD_INT 5000
1177: PUSH
1178: EMPTY
1179: LIST
1180: LIST
1181: LIST
1182: PUSH
1183: EMPTY
1184: LIST
1185: LIST
1186: LIST
1187: LIST
1188: LIST
1189: LIST
1190: PUSH
1191: LD_EXP 36
1195: PUSH
1196: LD_INT 1
1198: PLUS
1199: ARRAY
1200: ST_TO_ADDR
// starting_crates := [ ] ;
1201: LD_ADDR_EXP 7
1205: PUSH
1206: EMPTY
1207: ST_TO_ADDR
// end else
1208: GO 1356
// begin starting_resources := [ [ 0 , 0 , 0 ] , [ 30 , 0 , 0 ] , [ 50 , 20 , 0 ] , [ 80 , 40 , 20 ] ] [ def_starting_resources + 1 ] ;
1210: LD_ADDR_EXP 8
1214: PUSH
1215: LD_INT 0
1217: PUSH
1218: LD_INT 0
1220: PUSH
1221: LD_INT 0
1223: PUSH
1224: EMPTY
1225: LIST
1226: LIST
1227: LIST
1228: PUSH
1229: LD_INT 30
1231: PUSH
1232: LD_INT 0
1234: PUSH
1235: LD_INT 0
1237: PUSH
1238: EMPTY
1239: LIST
1240: LIST
1241: LIST
1242: PUSH
1243: LD_INT 50
1245: PUSH
1246: LD_INT 20
1248: PUSH
1249: LD_INT 0
1251: PUSH
1252: EMPTY
1253: LIST
1254: LIST
1255: LIST
1256: PUSH
1257: LD_INT 80
1259: PUSH
1260: LD_INT 40
1262: PUSH
1263: LD_INT 20
1265: PUSH
1266: EMPTY
1267: LIST
1268: LIST
1269: LIST
1270: PUSH
1271: EMPTY
1272: LIST
1273: LIST
1274: LIST
1275: LIST
1276: PUSH
1277: LD_EXP 36
1281: PUSH
1282: LD_INT 1
1284: PLUS
1285: ARRAY
1286: ST_TO_ADDR
// starting_crates := [ [ 10 ] , [ 7 , 14 ] , [ 6 , 12 , 18 ] , [ 5 , 10 , 15 , 20 ] ] [ def_starting_resources + 1 ] ;
1287: LD_ADDR_EXP 7
1291: PUSH
1292: LD_INT 10
1294: PUSH
1295: EMPTY
1296: LIST
1297: PUSH
1298: LD_INT 7
1300: PUSH
1301: LD_INT 14
1303: PUSH
1304: EMPTY
1305: LIST
1306: LIST
1307: PUSH
1308: LD_INT 6
1310: PUSH
1311: LD_INT 12
1313: PUSH
1314: LD_INT 18
1316: PUSH
1317: EMPTY
1318: LIST
1319: LIST
1320: LIST
1321: PUSH
1322: LD_INT 5
1324: PUSH
1325: LD_INT 10
1327: PUSH
1328: LD_INT 15
1330: PUSH
1331: LD_INT 20
1333: PUSH
1334: EMPTY
1335: LIST
1336: LIST
1337: LIST
1338: LIST
1339: PUSH
1340: EMPTY
1341: LIST
1342: LIST
1343: LIST
1344: LIST
1345: PUSH
1346: LD_EXP 36
1350: PUSH
1351: LD_INT 1
1353: PLUS
1354: ARRAY
1355: ST_TO_ADDR
// end ; shipments_density := [ 150 , 125 , 100 , 50 ] [ def_shipments_density + 1 ] ;
1356: LD_ADDR_EXP 9
1360: PUSH
1361: LD_INT 150
1363: PUSH
1364: LD_INT 125
1366: PUSH
1367: LD_INT 100
1369: PUSH
1370: LD_INT 50
1372: PUSH
1373: EMPTY
1374: LIST
1375: LIST
1376: LIST
1377: LIST
1378: PUSH
1379: LD_EXP 37
1383: PUSH
1384: LD_INT 1
1386: PLUS
1387: ARRAY
1388: ST_TO_ADDR
// respawning_time_min := [ 0 0$0 , 5 5$00 , 3 3$0 ] [ def_people_respawning + 1 ] ;
1389: LD_ADDR_EXP 13
1393: PUSH
1394: LD_INT 0
1396: PUSH
1397: LD_INT 10500
1399: PUSH
1400: LD_INT 6300
1402: PUSH
1403: EMPTY
1404: LIST
1405: LIST
1406: LIST
1407: PUSH
1408: LD_EXP 43
1412: PUSH
1413: LD_INT 1
1415: PLUS
1416: ARRAY
1417: ST_TO_ADDR
// respawning_time_max := [ 0 0$0 , 15 15$00 , 5 5$0 ] [ def_people_respawning + 1 ] ;
1418: LD_ADDR_EXP 14
1422: PUSH
1423: LD_INT 0
1425: PUSH
1426: LD_INT 31500
1428: PUSH
1429: LD_INT 10500
1431: PUSH
1432: EMPTY
1433: LIST
1434: LIST
1435: LIST
1436: PUSH
1437: LD_EXP 43
1441: PUSH
1442: LD_INT 1
1444: PLUS
1445: ARRAY
1446: ST_TO_ADDR
// amount_of_apemen := [ 0 , 3 , 6 , 9 ] [ def_amount_of_apemen + 1 ] ;
1447: LD_ADDR_EXP 11
1451: PUSH
1452: LD_INT 0
1454: PUSH
1455: LD_INT 3
1457: PUSH
1458: LD_INT 6
1460: PUSH
1461: LD_INT 9
1463: PUSH
1464: EMPTY
1465: LIST
1466: LIST
1467: LIST
1468: LIST
1469: PUSH
1470: LD_EXP 44
1474: PUSH
1475: LD_INT 1
1477: PLUS
1478: ARRAY
1479: ST_TO_ADDR
// amount_of_siberit := [ 30 , 50 , 80 , 100 , 130 , 150 , 200 ] [ def_amount_of_siberit + 1 ] ;
1480: LD_ADDR_EXP 12
1484: PUSH
1485: LD_INT 30
1487: PUSH
1488: LD_INT 50
1490: PUSH
1491: LD_INT 80
1493: PUSH
1494: LD_INT 100
1496: PUSH
1497: LD_INT 130
1499: PUSH
1500: LD_INT 150
1502: PUSH
1503: LD_INT 200
1505: PUSH
1506: EMPTY
1507: LIST
1508: LIST
1509: LIST
1510: LIST
1511: LIST
1512: LIST
1513: LIST
1514: PUSH
1515: LD_EXP 1
1519: PUSH
1520: LD_INT 1
1522: PLUS
1523: ARRAY
1524: ST_TO_ADDR
// morale_decreasing_time := [ - 1 , 0 0$10 , 0 0$20 , 0 0$40 , 0 0$0 ] [ def_morale_flags + 1 ] ;
1525: LD_ADDR_EXP 10
1529: PUSH
1530: LD_INT 1
1532: NEG
1533: PUSH
1534: LD_INT 350
1536: PUSH
1537: LD_INT 700
1539: PUSH
1540: LD_INT 1400
1542: PUSH
1543: LD_INT 0
1545: PUSH
1546: EMPTY
1547: LIST
1548: LIST
1549: LIST
1550: LIST
1551: LIST
1552: PUSH
1553: LD_EXP 41
1557: PUSH
1558: LD_INT 1
1560: PLUS
1561: ARRAY
1562: ST_TO_ADDR
// battle_flags_id := [ ] ;
1563: LD_ADDR_EXP 30
1567: PUSH
1568: EMPTY
1569: ST_TO_ADDR
// BuildUpAreas := [ BuildUp1 , BuildUp2 , BuildUp3 , BuildUp4 , BuildUp5 , BuildUp6 , BuildUp7 , BuildUp8 ] ;
1570: LD_ADDR_EXP 50
1574: PUSH
1575: LD_INT 1
1577: PUSH
1578: LD_INT 2
1580: PUSH
1581: LD_INT 3
1583: PUSH
1584: LD_INT 4
1586: PUSH
1587: LD_INT 5
1589: PUSH
1590: LD_INT 6
1592: PUSH
1593: LD_INT 7
1595: PUSH
1596: LD_INT 8
1598: PUSH
1599: EMPTY
1600: LIST
1601: LIST
1602: LIST
1603: LIST
1604: LIST
1605: LIST
1606: LIST
1607: LIST
1608: ST_TO_ADDR
// end ;
1609: LD_VAR 0 1
1613: RET
// function SetMpTechLevel ( level ) ; var side , i ; begin
1614: LD_INT 0
1616: PPUSH
1617: PPUSH
1618: PPUSH
// for side = 1 to 8 do
1619: LD_ADDR_VAR 0 3
1623: PUSH
1624: DOUBLE
1625: LD_INT 1
1627: DEC
1628: ST_TO_ADDR
1629: LD_INT 8
1631: PUSH
1632: FOR_TO
1633: IFFALSE 5629
// begin for i = 1 to 72 do
1635: LD_ADDR_VAR 0 4
1639: PUSH
1640: DOUBLE
1641: LD_INT 1
1643: DEC
1644: ST_TO_ADDR
1645: LD_INT 72
1647: PUSH
1648: FOR_TO
1649: IFFALSE 1670
// SetTech ( i , side , state_disabled ) ;
1651: LD_VAR 0 4
1655: PPUSH
1656: LD_VAR 0 3
1660: PPUSH
1661: LD_INT 0
1663: PPUSH
1664: CALL_OW 322
1668: GO 1648
1670: POP
1671: POP
// for i = 0 to 39 do
1672: LD_ADDR_VAR 0 4
1676: PUSH
1677: DOUBLE
1678: LD_INT 0
1680: DEC
1681: ST_TO_ADDR
1682: LD_INT 39
1684: PUSH
1685: FOR_TO
1686: IFFALSE 1707
// SetRestrict ( i , side , false ) ;
1688: LD_VAR 0 4
1692: PPUSH
1693: LD_VAR 0 3
1697: PPUSH
1698: LD_INT 0
1700: PPUSH
1701: CALL_OW 324
1705: GO 1685
1707: POP
1708: POP
// case level of 1 :
1709: LD_VAR 0 1
1713: PUSH
1714: LD_INT 1
1716: DOUBLE
1717: EQUAL
1718: IFTRUE 1722
1720: GO 1875
1722: POP
// begin SetTech ( tech_solpow , side , state_enabled ) ;
1723: LD_INT 35
1725: PPUSH
1726: LD_VAR 0 3
1730: PPUSH
1731: LD_INT 1
1733: PPUSH
1734: CALL_OW 322
// SetTech ( tech_soleng , side , state_enabled ) ;
1738: LD_INT 45
1740: PPUSH
1741: LD_VAR 0 3
1745: PPUSH
1746: LD_INT 1
1748: PPUSH
1749: CALL_OW 322
// SetTech ( tech_oilpow , side , state_enabled ) ;
1753: LD_INT 46
1755: PPUSH
1756: LD_VAR 0 3
1760: PPUSH
1761: LD_INT 1
1763: PPUSH
1764: CALL_OW 322
// SetTech ( tech_oileng , side , state_enabled ) ;
1768: LD_INT 47
1770: PPUSH
1771: LD_VAR 0 3
1775: PPUSH
1776: LD_INT 1
1778: PPUSH
1779: CALL_OW 322
// SetRestrict ( b_depot , side , true ) ;
1783: LD_INT 0
1785: PPUSH
1786: LD_VAR 0 3
1790: PPUSH
1791: LD_INT 1
1793: PPUSH
1794: CALL_OW 324
// SetRestrict ( b_workshop , side , true ) ;
1798: LD_INT 2
1800: PPUSH
1801: LD_VAR 0 3
1805: PPUSH
1806: LD_INT 1
1808: PPUSH
1809: CALL_OW 324
// SetRestrict ( b_armoury , side , true ) ;
1813: LD_INT 4
1815: PPUSH
1816: LD_VAR 0 3
1820: PPUSH
1821: LD_INT 1
1823: PPUSH
1824: CALL_OW 324
// SetRestrict ( b_lab , side , true ) ;
1828: LD_INT 6
1830: PPUSH
1831: LD_VAR 0 3
1835: PPUSH
1836: LD_INT 1
1838: PPUSH
1839: CALL_OW 324
// SetRestrict ( b_oil_mine , side , true ) ;
1843: LD_INT 29
1845: PPUSH
1846: LD_VAR 0 3
1850: PPUSH
1851: LD_INT 1
1853: PPUSH
1854: CALL_OW 324
// SetRestrict ( b_breastwork , side , true ) ;
1858: LD_INT 31
1860: PPUSH
1861: LD_VAR 0 3
1865: PPUSH
1866: LD_INT 1
1868: PPUSH
1869: CALL_OW 324
// end ; 2 :
1873: GO 5627
1875: LD_INT 2
1877: DOUBLE
1878: EQUAL
1879: IFTRUE 1883
1881: GO 2081
1883: POP
// begin SetTech ( tech_solpow , side , state_enabled ) ;
1884: LD_INT 35
1886: PPUSH
1887: LD_VAR 0 3
1891: PPUSH
1892: LD_INT 1
1894: PPUSH
1895: CALL_OW 322
// SetTech ( tech_soleng , side , state_enabled ) ;
1899: LD_INT 45
1901: PPUSH
1902: LD_VAR 0 3
1906: PPUSH
1907: LD_INT 1
1909: PPUSH
1910: CALL_OW 322
// SetTech ( tech_oilpow , side , state_enabled ) ;
1914: LD_INT 46
1916: PPUSH
1917: LD_VAR 0 3
1921: PPUSH
1922: LD_INT 1
1924: PPUSH
1925: CALL_OW 322
// SetTech ( tech_oileng , side , state_enabled ) ;
1929: LD_INT 47
1931: PPUSH
1932: LD_VAR 0 3
1936: PPUSH
1937: LD_INT 1
1939: PPUSH
1940: CALL_OW 322
// SetTech ( tech_apelang , side , state_enabled ) ;
1944: LD_INT 1
1946: PPUSH
1947: LD_VAR 0 3
1951: PPUSH
1952: LD_INT 1
1954: PPUSH
1955: CALL_OW 322
// SetTech ( tech_apepsych , side , state_enabled ) ;
1959: LD_INT 2
1961: PPUSH
1962: LD_VAR 0 3
1966: PPUSH
1967: LD_INT 1
1969: PPUSH
1970: CALL_OW 322
// SetTech ( tech_apeagres , side , state_enabled ) ;
1974: LD_INT 11
1976: PPUSH
1977: LD_VAR 0 3
1981: PPUSH
1982: LD_INT 1
1984: PPUSH
1985: CALL_OW 322
// SetRestrict ( b_depot , side , true ) ;
1989: LD_INT 0
1991: PPUSH
1992: LD_VAR 0 3
1996: PPUSH
1997: LD_INT 1
1999: PPUSH
2000: CALL_OW 324
// SetRestrict ( b_workshop , side , true ) ;
2004: LD_INT 2
2006: PPUSH
2007: LD_VAR 0 3
2011: PPUSH
2012: LD_INT 1
2014: PPUSH
2015: CALL_OW 324
// SetRestrict ( b_armoury , side , true ) ;
2019: LD_INT 4
2021: PPUSH
2022: LD_VAR 0 3
2026: PPUSH
2027: LD_INT 1
2029: PPUSH
2030: CALL_OW 324
// SetRestrict ( b_lab , side , true ) ;
2034: LD_INT 6
2036: PPUSH
2037: LD_VAR 0 3
2041: PPUSH
2042: LD_INT 1
2044: PPUSH
2045: CALL_OW 324
// SetRestrict ( b_oil_mine , side , true ) ;
2049: LD_INT 29
2051: PPUSH
2052: LD_VAR 0 3
2056: PPUSH
2057: LD_INT 1
2059: PPUSH
2060: CALL_OW 324
// SetRestrict ( b_breastwork , side , true ) ;
2064: LD_INT 31
2066: PPUSH
2067: LD_VAR 0 3
2071: PPUSH
2072: LD_INT 1
2074: PPUSH
2075: CALL_OW 324
// end ; 3 :
2079: GO 5627
2081: LD_INT 3
2083: DOUBLE
2084: EQUAL
2085: IFTRUE 2089
2087: GO 2542
2089: POP
// begin SetTech ( tech_solpow , side , state_enabled ) ;
2090: LD_INT 35
2092: PPUSH
2093: LD_VAR 0 3
2097: PPUSH
2098: LD_INT 1
2100: PPUSH
2101: CALL_OW 322
// SetTech ( tech_soleng , side , state_enabled ) ;
2105: LD_INT 45
2107: PPUSH
2108: LD_VAR 0 3
2112: PPUSH
2113: LD_INT 1
2115: PPUSH
2116: CALL_OW 322
// SetTech ( tech_oilpow , side , state_enabled ) ;
2120: LD_INT 46
2122: PPUSH
2123: LD_VAR 0 3
2127: PPUSH
2128: LD_INT 1
2130: PPUSH
2131: CALL_OW 322
// SetTech ( tech_oileng , side , state_enabled ) ;
2135: LD_INT 47
2137: PPUSH
2138: LD_VAR 0 3
2142: PPUSH
2143: LD_INT 1
2145: PPUSH
2146: CALL_OW 322
// SetTech ( tech_apelang , side , state_enabled ) ;
2150: LD_INT 1
2152: PPUSH
2153: LD_VAR 0 3
2157: PPUSH
2158: LD_INT 1
2160: PPUSH
2161: CALL_OW 322
// SetTech ( tech_apepsych , side , state_enabled ) ;
2165: LD_INT 2
2167: PPUSH
2168: LD_VAR 0 3
2172: PPUSH
2173: LD_INT 1
2175: PPUSH
2176: CALL_OW 322
// SetTech ( tech_apeagres , side , state_enabled ) ;
2180: LD_INT 11
2182: PPUSH
2183: LD_VAR 0 3
2187: PPUSH
2188: LD_INT 1
2190: PPUSH
2191: CALL_OW 322
// SetTech ( tech_tech1 , side , state_enabled ) ;
2195: LD_INT 48
2197: PPUSH
2198: LD_VAR 0 3
2202: PPUSH
2203: LD_INT 1
2205: PPUSH
2206: CALL_OW 322
// SetTech ( tech_gatling , side , state_enabled ) ;
2210: LD_INT 69
2212: PPUSH
2213: LD_VAR 0 3
2217: PPUSH
2218: LD_INT 1
2220: PPUSH
2221: CALL_OW 322
// SetTech ( tech_gun , side , state_enabled ) ;
2225: LD_INT 39
2227: PPUSH
2228: LD_VAR 0 3
2232: PPUSH
2233: LD_INT 1
2235: PPUSH
2236: CALL_OW 322
// SetTech ( tech_selfdest , side , state_enabled ) ;
2240: LD_INT 43
2242: PPUSH
2243: LD_VAR 0 3
2247: PPUSH
2248: LD_INT 1
2250: PPUSH
2251: CALL_OW 322
// SetTech ( tech_weap1 , side , state_enabled ) ;
2255: LD_INT 51
2257: PPUSH
2258: LD_VAR 0 3
2262: PPUSH
2263: LD_INT 1
2265: PPUSH
2266: CALL_OW 322
// SetTech ( tech_radar , side , state_enabled ) ;
2270: LD_INT 6
2272: PPUSH
2273: LD_VAR 0 3
2277: PPUSH
2278: LD_INT 1
2280: PPUSH
2281: CALL_OW 322
// SetRestrict ( b_depot , side , true ) ;
2285: LD_INT 0
2287: PPUSH
2288: LD_VAR 0 3
2292: PPUSH
2293: LD_INT 1
2295: PPUSH
2296: CALL_OW 324
// SetRestrict ( b_workshop , side , true ) ;
2300: LD_INT 2
2302: PPUSH
2303: LD_VAR 0 3
2307: PPUSH
2308: LD_INT 1
2310: PPUSH
2311: CALL_OW 324
// SetRestrict ( b_factory , side , true ) ;
2315: LD_INT 3
2317: PPUSH
2318: LD_VAR 0 3
2322: PPUSH
2323: LD_INT 1
2325: PPUSH
2326: CALL_OW 324
// SetRestrict ( b_armoury , side , true ) ;
2330: LD_INT 4
2332: PPUSH
2333: LD_VAR 0 3
2337: PPUSH
2338: LD_INT 1
2340: PPUSH
2341: CALL_OW 324
// SetRestrict ( b_lab , side , true ) ;
2345: LD_INT 6
2347: PPUSH
2348: LD_VAR 0 3
2352: PPUSH
2353: LD_INT 1
2355: PPUSH
2356: CALL_OW 324
// SetRestrict ( b_lab_half , side , true ) ;
2360: LD_INT 7
2362: PPUSH
2363: LD_VAR 0 3
2367: PPUSH
2368: LD_INT 1
2370: PPUSH
2371: CALL_OW 324
// SetRestrict ( b_lab_full , side , true ) ;
2375: LD_INT 8
2377: PPUSH
2378: LD_VAR 0 3
2382: PPUSH
2383: LD_INT 1
2385: PPUSH
2386: CALL_OW 324
// SetRestrict ( b_lab_weapon , side , true ) ;
2390: LD_INT 10
2392: PPUSH
2393: LD_VAR 0 3
2397: PPUSH
2398: LD_INT 1
2400: PPUSH
2401: CALL_OW 324
// SetRestrict ( b_lab_opto , side , true ) ;
2405: LD_INT 15
2407: PPUSH
2408: LD_VAR 0 3
2412: PPUSH
2413: LD_INT 1
2415: PPUSH
2416: CALL_OW 324
// SetRestrict ( b_ext_track , side , true ) ;
2420: LD_INT 16
2422: PPUSH
2423: LD_VAR 0 3
2427: PPUSH
2428: LD_INT 1
2430: PPUSH
2431: CALL_OW 324
// SetRestrict ( b_ext_gun , side , true ) ;
2435: LD_INT 17
2437: PPUSH
2438: LD_VAR 0 3
2442: PPUSH
2443: LD_INT 1
2445: PPUSH
2446: CALL_OW 324
// SetRestrict ( b_ext_radar , side , true ) ;
2450: LD_INT 20
2452: PPUSH
2453: LD_VAR 0 3
2457: PPUSH
2458: LD_INT 1
2460: PPUSH
2461: CALL_OW 324
// SetRestrict ( b_oil_power , side , true ) ;
2465: LD_INT 26
2467: PPUSH
2468: LD_VAR 0 3
2472: PPUSH
2473: LD_INT 1
2475: PPUSH
2476: CALL_OW 324
// SetRestrict ( b_solar_power , side , true ) ;
2480: LD_INT 27
2482: PPUSH
2483: LD_VAR 0 3
2487: PPUSH
2488: LD_INT 1
2490: PPUSH
2491: CALL_OW 324
// SetRestrict ( b_oil_mine , side , true ) ;
2495: LD_INT 29
2497: PPUSH
2498: LD_VAR 0 3
2502: PPUSH
2503: LD_INT 1
2505: PPUSH
2506: CALL_OW 324
// SetRestrict ( b_breastwork , side , true ) ;
2510: LD_INT 31
2512: PPUSH
2513: LD_VAR 0 3
2517: PPUSH
2518: LD_INT 1
2520: PPUSH
2521: CALL_OW 324
// SetRestrict ( b_bunker , side , true ) ;
2525: LD_INT 32
2527: PPUSH
2528: LD_VAR 0 3
2532: PPUSH
2533: LD_INT 1
2535: PPUSH
2536: CALL_OW 324
// end ; 4 :
2540: GO 5627
2542: LD_INT 4
2544: DOUBLE
2545: EQUAL
2546: IFTRUE 2550
2548: GO 3498
2550: POP
// begin SetTech ( tech_solpow , side , state_enabled ) ;
2551: LD_INT 35
2553: PPUSH
2554: LD_VAR 0 3
2558: PPUSH
2559: LD_INT 1
2561: PPUSH
2562: CALL_OW 322
// SetTech ( tech_soleng , side , state_enabled ) ;
2566: LD_INT 45
2568: PPUSH
2569: LD_VAR 0 3
2573: PPUSH
2574: LD_INT 1
2576: PPUSH
2577: CALL_OW 322
// SetTech ( tech_oilpow , side , state_enabled ) ;
2581: LD_INT 46
2583: PPUSH
2584: LD_VAR 0 3
2588: PPUSH
2589: LD_INT 1
2591: PPUSH
2592: CALL_OW 322
// SetTech ( tech_oileng , side , state_enabled ) ;
2596: LD_INT 47
2598: PPUSH
2599: LD_VAR 0 3
2603: PPUSH
2604: LD_INT 1
2606: PPUSH
2607: CALL_OW 322
// SetTech ( tech_apelang , side , state_enabled ) ;
2611: LD_INT 1
2613: PPUSH
2614: LD_VAR 0 3
2618: PPUSH
2619: LD_INT 1
2621: PPUSH
2622: CALL_OW 322
// SetTech ( tech_apepsych , side , state_enabled ) ;
2626: LD_INT 2
2628: PPUSH
2629: LD_VAR 0 3
2633: PPUSH
2634: LD_INT 1
2636: PPUSH
2637: CALL_OW 322
// SetTech ( tech_apeagres , side , state_enabled ) ;
2641: LD_INT 11
2643: PPUSH
2644: LD_VAR 0 3
2648: PPUSH
2649: LD_INT 1
2651: PPUSH
2652: CALL_OW 322
// SetTech ( tech_sibdet , side , state_enabled ) ;
2656: LD_INT 20
2658: PPUSH
2659: LD_VAR 0 3
2663: PPUSH
2664: LD_INT 1
2666: PPUSH
2667: CALL_OW 322
// SetTech ( tech_tech1 , side , state_enabled ) ;
2671: LD_INT 48
2673: PPUSH
2674: LD_VAR 0 3
2678: PPUSH
2679: LD_INT 1
2681: PPUSH
2682: CALL_OW 322
// SetTech ( tech_tech2 , side , state_enabled ) ;
2686: LD_INT 49
2688: PPUSH
2689: LD_VAR 0 3
2693: PPUSH
2694: LD_INT 1
2696: PPUSH
2697: CALL_OW 322
// SetTech ( tech_gatling , side , state_enabled ) ;
2701: LD_INT 69
2703: PPUSH
2704: LD_VAR 0 3
2708: PPUSH
2709: LD_INT 1
2711: PPUSH
2712: CALL_OW 322
// SetTech ( tech_gun , side , state_enabled ) ;
2716: LD_INT 39
2718: PPUSH
2719: LD_VAR 0 3
2723: PPUSH
2724: LD_INT 1
2726: PPUSH
2727: CALL_OW 322
// SetTech ( tech_advmet , side , state_enabled ) ;
2731: LD_INT 34
2733: PPUSH
2734: LD_VAR 0 3
2738: PPUSH
2739: LD_INT 1
2741: PPUSH
2742: CALL_OW 322
// SetTech ( tech_explos , side , state_enabled ) ;
2746: LD_INT 42
2748: PPUSH
2749: LD_VAR 0 3
2753: PPUSH
2754: LD_INT 1
2756: PPUSH
2757: CALL_OW 322
// SetTech ( tech_bazooka , side , state_enabled ) ;
2761: LD_INT 44
2763: PPUSH
2764: LD_VAR 0 3
2768: PPUSH
2769: LD_INT 1
2771: PPUSH
2772: CALL_OW 322
// SetTech ( tech_mortar , side , state_enabled ) ;
2776: LD_INT 41
2778: PPUSH
2779: LD_VAR 0 3
2783: PPUSH
2784: LD_INT 1
2786: PPUSH
2787: CALL_OW 322
// SetTech ( tech_selfdest , side , state_enabled ) ;
2791: LD_INT 43
2793: PPUSH
2794: LD_VAR 0 3
2798: PPUSH
2799: LD_INT 1
2801: PPUSH
2802: CALL_OW 322
// SetTech ( tech_flame , side , state_enabled ) ;
2806: LD_INT 70
2808: PPUSH
2809: LD_VAR 0 3
2813: PPUSH
2814: LD_INT 1
2816: PPUSH
2817: CALL_OW 322
// SetTech ( tech_weap1 , side , state_enabled ) ;
2821: LD_INT 51
2823: PPUSH
2824: LD_VAR 0 3
2828: PPUSH
2829: LD_INT 1
2831: PPUSH
2832: CALL_OW 322
// SetTech ( tech_weap2 , side , state_enabled ) ;
2836: LD_INT 52
2838: PPUSH
2839: LD_VAR 0 3
2843: PPUSH
2844: LD_INT 1
2846: PPUSH
2847: CALL_OW 322
// SetTech ( tech_radar , side , state_enabled ) ;
2851: LD_INT 6
2853: PPUSH
2854: LD_VAR 0 3
2858: PPUSH
2859: LD_INT 1
2861: PPUSH
2862: CALL_OW 322
// SetTech ( tech_remcont , side , state_enabled ) ;
2866: LD_INT 15
2868: PPUSH
2869: LD_VAR 0 3
2873: PPUSH
2874: LD_INT 1
2876: PPUSH
2877: CALL_OW 322
// SetTech ( tech_matdet , side , state_enabled ) ;
2881: LD_INT 7
2883: PPUSH
2884: LD_VAR 0 3
2888: PPUSH
2889: LD_INT 1
2891: PPUSH
2892: CALL_OW 322
// SetTech ( tech_lassight , side , state_enabled ) ;
2896: LD_INT 12
2898: PPUSH
2899: LD_VAR 0 3
2903: PPUSH
2904: LD_INT 1
2906: PPUSH
2907: CALL_OW 322
// SetTech ( tech_remcharge , side , state_enabled ) ;
2911: LD_INT 18
2913: PPUSH
2914: LD_VAR 0 3
2918: PPUSH
2919: LD_INT 1
2921: PPUSH
2922: CALL_OW 322
// SetTech ( tech_opto1 , side , state_enabled ) ;
2926: LD_INT 60
2928: PPUSH
2929: LD_VAR 0 3
2933: PPUSH
2934: LD_INT 1
2936: PPUSH
2937: CALL_OW 322
// SetTech ( tech_matpred , side , state_enabled ) ;
2941: LD_INT 9
2943: PPUSH
2944: LD_VAR 0 3
2948: PPUSH
2949: LD_INT 1
2951: PPUSH
2952: CALL_OW 322
// SetTech ( tech_taufield , side , state_enabled ) ;
2956: LD_INT 30
2958: PPUSH
2959: LD_VAR 0 3
2963: PPUSH
2964: LD_INT 1
2966: PPUSH
2967: CALL_OW 322
// SetTech ( tech_limteleport , side , state_enabled ) ;
2971: LD_INT 37
2973: PPUSH
2974: LD_VAR 0 3
2978: PPUSH
2979: LD_INT 1
2981: PPUSH
2982: CALL_OW 322
// SetTech ( tech_stimdrugs , side , state_enabled ) ;
2986: LD_INT 5
2988: PPUSH
2989: LD_VAR 0 3
2993: PPUSH
2994: LD_INT 1
2996: PPUSH
2997: CALL_OW 322
// SetTech ( tech_bio1 , side , state_enabled ) ;
3001: LD_INT 66
3003: PPUSH
3004: LD_VAR 0 3
3008: PPUSH
3009: LD_INT 1
3011: PPUSH
3012: CALL_OW 322
// SetTech ( tech_sibpow , side , state_enabled ) ;
3016: LD_INT 21
3018: PPUSH
3019: LD_VAR 0 3
3023: PPUSH
3024: LD_INT 1
3026: PPUSH
3027: CALL_OW 322
// SetTech ( tech_sibeng , side , state_enabled ) ;
3031: LD_INT 22
3033: PPUSH
3034: LD_VAR 0 3
3038: PPUSH
3039: LD_INT 1
3041: PPUSH
3042: CALL_OW 322
// SetTech ( tech_sib1 , side , state_enabled ) ;
3046: LD_INT 54
3048: PPUSH
3049: LD_VAR 0 3
3053: PPUSH
3054: LD_INT 1
3056: PPUSH
3057: CALL_OW 322
// SetRestrict ( b_depot , side , true ) ;
3061: LD_INT 0
3063: PPUSH
3064: LD_VAR 0 3
3068: PPUSH
3069: LD_INT 1
3071: PPUSH
3072: CALL_OW 324
// SetRestrict ( b_warehouse , side , true ) ;
3076: LD_INT 1
3078: PPUSH
3079: LD_VAR 0 3
3083: PPUSH
3084: LD_INT 1
3086: PPUSH
3087: CALL_OW 324
// SetRestrict ( b_workshop , side , true ) ;
3091: LD_INT 2
3093: PPUSH
3094: LD_VAR 0 3
3098: PPUSH
3099: LD_INT 1
3101: PPUSH
3102: CALL_OW 324
// SetRestrict ( b_factory , side , true ) ;
3106: LD_INT 3
3108: PPUSH
3109: LD_VAR 0 3
3113: PPUSH
3114: LD_INT 1
3116: PPUSH
3117: CALL_OW 324
// SetRestrict ( b_armoury , side , true ) ;
3121: LD_INT 4
3123: PPUSH
3124: LD_VAR 0 3
3128: PPUSH
3129: LD_INT 1
3131: PPUSH
3132: CALL_OW 324
// SetRestrict ( b_barracks , side , true ) ;
3136: LD_INT 5
3138: PPUSH
3139: LD_VAR 0 3
3143: PPUSH
3144: LD_INT 1
3146: PPUSH
3147: CALL_OW 324
// SetRestrict ( b_lab , side , true ) ;
3151: LD_INT 6
3153: PPUSH
3154: LD_VAR 0 3
3158: PPUSH
3159: LD_INT 1
3161: PPUSH
3162: CALL_OW 324
// SetRestrict ( b_lab_half , side , true ) ;
3166: LD_INT 7
3168: PPUSH
3169: LD_VAR 0 3
3173: PPUSH
3174: LD_INT 1
3176: PPUSH
3177: CALL_OW 324
// SetRestrict ( b_lab_full , side , true ) ;
3181: LD_INT 8
3183: PPUSH
3184: LD_VAR 0 3
3188: PPUSH
3189: LD_INT 1
3191: PPUSH
3192: CALL_OW 324
// SetRestrict ( b_lab_weapon , side , true ) ;
3196: LD_INT 10
3198: PPUSH
3199: LD_VAR 0 3
3203: PPUSH
3204: LD_INT 1
3206: PPUSH
3207: CALL_OW 324
// SetRestrict ( b_lab_siberium , side , true ) ;
3211: LD_INT 11
3213: PPUSH
3214: LD_VAR 0 3
3218: PPUSH
3219: LD_INT 1
3221: PPUSH
3222: CALL_OW 324
// SetRestrict ( b_lab_computer , side , true ) ;
3226: LD_INT 12
3228: PPUSH
3229: LD_VAR 0 3
3233: PPUSH
3234: LD_INT 1
3236: PPUSH
3237: CALL_OW 324
// SetRestrict ( b_lab_biological , side , true ) ;
3241: LD_INT 13
3243: PPUSH
3244: LD_VAR 0 3
3248: PPUSH
3249: LD_INT 1
3251: PPUSH
3252: CALL_OW 324
// SetRestrict ( b_lab_spacetime , side , true ) ;
3256: LD_INT 14
3258: PPUSH
3259: LD_VAR 0 3
3263: PPUSH
3264: LD_INT 1
3266: PPUSH
3267: CALL_OW 324
// SetRestrict ( b_lab_opto , side , true ) ;
3271: LD_INT 15
3273: PPUSH
3274: LD_VAR 0 3
3278: PPUSH
3279: LD_INT 1
3281: PPUSH
3282: CALL_OW 324
// SetRestrict ( b_ext_track , side , true ) ;
3286: LD_INT 16
3288: PPUSH
3289: LD_VAR 0 3
3293: PPUSH
3294: LD_INT 1
3296: PPUSH
3297: CALL_OW 324
// SetRestrict ( b_ext_gun , side , true ) ;
3301: LD_INT 17
3303: PPUSH
3304: LD_VAR 0 3
3308: PPUSH
3309: LD_INT 1
3311: PPUSH
3312: CALL_OW 324
// SetRestrict ( b_ext_noncombat , side , true ) ;
3316: LD_INT 19
3318: PPUSH
3319: LD_VAR 0 3
3323: PPUSH
3324: LD_INT 1
3326: PPUSH
3327: CALL_OW 324
// SetRestrict ( b_ext_radar , side , true ) ;
3331: LD_INT 20
3333: PPUSH
3334: LD_VAR 0 3
3338: PPUSH
3339: LD_INT 1
3341: PPUSH
3342: CALL_OW 324
// SetRestrict ( b_ext_siberium , side , true ) ;
3346: LD_INT 21
3348: PPUSH
3349: LD_VAR 0 3
3353: PPUSH
3354: LD_INT 1
3356: PPUSH
3357: CALL_OW 324
// SetRestrict ( b_ext_stitch , side , true ) ;
3361: LD_INT 23
3363: PPUSH
3364: LD_VAR 0 3
3368: PPUSH
3369: LD_INT 1
3371: PPUSH
3372: CALL_OW 324
// SetRestrict ( b_oil_power , side , true ) ;
3376: LD_INT 26
3378: PPUSH
3379: LD_VAR 0 3
3383: PPUSH
3384: LD_INT 1
3386: PPUSH
3387: CALL_OW 324
// SetRestrict ( b_solar_power , side , true ) ;
3391: LD_INT 27
3393: PPUSH
3394: LD_VAR 0 3
3398: PPUSH
3399: LD_INT 1
3401: PPUSH
3402: CALL_OW 324
// SetRestrict ( b_siberite_power , side , true ) ;
3406: LD_INT 28
3408: PPUSH
3409: LD_VAR 0 3
3413: PPUSH
3414: LD_INT 1
3416: PPUSH
3417: CALL_OW 324
// SetRestrict ( b_oil_mine , side , true ) ;
3421: LD_INT 29
3423: PPUSH
3424: LD_VAR 0 3
3428: PPUSH
3429: LD_INT 1
3431: PPUSH
3432: CALL_OW 324
// SetRestrict ( b_siberite_mine , side , true ) ;
3436: LD_INT 30
3438: PPUSH
3439: LD_VAR 0 3
3443: PPUSH
3444: LD_INT 1
3446: PPUSH
3447: CALL_OW 324
// SetRestrict ( b_breastwork , side , true ) ;
3451: LD_INT 31
3453: PPUSH
3454: LD_VAR 0 3
3458: PPUSH
3459: LD_INT 1
3461: PPUSH
3462: CALL_OW 324
// SetRestrict ( b_bunker , side , true ) ;
3466: LD_INT 32
3468: PPUSH
3469: LD_VAR 0 3
3473: PPUSH
3474: LD_INT 1
3476: PPUSH
3477: CALL_OW 324
// SetRestrict ( b_control_tower , side , true ) ;
3481: LD_INT 36
3483: PPUSH
3484: LD_VAR 0 3
3488: PPUSH
3489: LD_INT 1
3491: PPUSH
3492: CALL_OW 324
// end ; 5 :
3496: GO 5627
3498: LD_INT 5
3500: DOUBLE
3501: EQUAL
3502: IFTRUE 3506
3504: GO 4619
3506: POP
// begin SetTech ( tech_solpow , side , state_enabled ) ;
3507: LD_INT 35
3509: PPUSH
3510: LD_VAR 0 3
3514: PPUSH
3515: LD_INT 1
3517: PPUSH
3518: CALL_OW 322
// SetTech ( tech_soleng , side , state_enabled ) ;
3522: LD_INT 45
3524: PPUSH
3525: LD_VAR 0 3
3529: PPUSH
3530: LD_INT 1
3532: PPUSH
3533: CALL_OW 322
// SetTech ( tech_oilpow , side , state_enabled ) ;
3537: LD_INT 46
3539: PPUSH
3540: LD_VAR 0 3
3544: PPUSH
3545: LD_INT 1
3547: PPUSH
3548: CALL_OW 322
// SetTech ( tech_oileng , side , state_enabled ) ;
3552: LD_INT 47
3554: PPUSH
3555: LD_VAR 0 3
3559: PPUSH
3560: LD_INT 1
3562: PPUSH
3563: CALL_OW 322
// SetTech ( tech_apelang , side , state_enabled ) ;
3567: LD_INT 1
3569: PPUSH
3570: LD_VAR 0 3
3574: PPUSH
3575: LD_INT 1
3577: PPUSH
3578: CALL_OW 322
// SetTech ( tech_apepsych , side , state_enabled ) ;
3582: LD_INT 2
3584: PPUSH
3585: LD_VAR 0 3
3589: PPUSH
3590: LD_INT 1
3592: PPUSH
3593: CALL_OW 322
// SetTech ( tech_apeagres , side , state_enabled ) ;
3597: LD_INT 11
3599: PPUSH
3600: LD_VAR 0 3
3604: PPUSH
3605: LD_INT 1
3607: PPUSH
3608: CALL_OW 322
// SetTech ( tech_sibdet , side , state_enabled ) ;
3612: LD_INT 20
3614: PPUSH
3615: LD_VAR 0 3
3619: PPUSH
3620: LD_INT 1
3622: PPUSH
3623: CALL_OW 322
// SetTech ( tech_tech1 , side , state_enabled ) ;
3627: LD_INT 48
3629: PPUSH
3630: LD_VAR 0 3
3634: PPUSH
3635: LD_INT 1
3637: PPUSH
3638: CALL_OW 322
// SetTech ( tech_tech2 , side , state_enabled ) ;
3642: LD_INT 49
3644: PPUSH
3645: LD_VAR 0 3
3649: PPUSH
3650: LD_INT 1
3652: PPUSH
3653: CALL_OW 322
// SetTech ( tech_gatling , side , state_enabled ) ;
3657: LD_INT 69
3659: PPUSH
3660: LD_VAR 0 3
3664: PPUSH
3665: LD_INT 1
3667: PPUSH
3668: CALL_OW 322
// SetTech ( tech_gun , side , state_enabled ) ;
3672: LD_INT 39
3674: PPUSH
3675: LD_VAR 0 3
3679: PPUSH
3680: LD_INT 1
3682: PPUSH
3683: CALL_OW 322
// SetTech ( tech_advmet , side , state_enabled ) ;
3687: LD_INT 34
3689: PPUSH
3690: LD_VAR 0 3
3694: PPUSH
3695: LD_INT 1
3697: PPUSH
3698: CALL_OW 322
// SetTech ( tech_explos , side , state_enabled ) ;
3702: LD_INT 42
3704: PPUSH
3705: LD_VAR 0 3
3709: PPUSH
3710: LD_INT 1
3712: PPUSH
3713: CALL_OW 322
// SetTech ( tech_bazooka , side , state_enabled ) ;
3717: LD_INT 44
3719: PPUSH
3720: LD_VAR 0 3
3724: PPUSH
3725: LD_INT 1
3727: PPUSH
3728: CALL_OW 322
// SetTech ( tech_mortar , side , state_enabled ) ;
3732: LD_INT 41
3734: PPUSH
3735: LD_VAR 0 3
3739: PPUSH
3740: LD_INT 1
3742: PPUSH
3743: CALL_OW 322
// SetTech ( tech_rocket , side , state_enabled ) ;
3747: LD_INT 40
3749: PPUSH
3750: LD_VAR 0 3
3754: PPUSH
3755: LD_INT 1
3757: PPUSH
3758: CALL_OW 322
// SetTech ( tech_selfdest , side , state_enabled ) ;
3762: LD_INT 43
3764: PPUSH
3765: LD_VAR 0 3
3769: PPUSH
3770: LD_INT 1
3772: PPUSH
3773: CALL_OW 322
// SetTech ( tech_flame , side , state_enabled ) ;
3777: LD_INT 70
3779: PPUSH
3780: LD_VAR 0 3
3784: PPUSH
3785: LD_INT 1
3787: PPUSH
3788: CALL_OW 322
// SetTech ( tech_weap1 , side , state_enabled ) ;
3792: LD_INT 51
3794: PPUSH
3795: LD_VAR 0 3
3799: PPUSH
3800: LD_INT 1
3802: PPUSH
3803: CALL_OW 322
// SetTech ( tech_weap2 , side , state_enabled ) ;
3807: LD_INT 52
3809: PPUSH
3810: LD_VAR 0 3
3814: PPUSH
3815: LD_INT 1
3817: PPUSH
3818: CALL_OW 322
// SetTech ( tech_radar , side , state_enabled ) ;
3822: LD_INT 6
3824: PPUSH
3825: LD_VAR 0 3
3829: PPUSH
3830: LD_INT 1
3832: PPUSH
3833: CALL_OW 322
// SetTech ( tech_remcont , side , state_enabled ) ;
3837: LD_INT 15
3839: PPUSH
3840: LD_VAR 0 3
3844: PPUSH
3845: LD_INT 1
3847: PPUSH
3848: CALL_OW 322
// SetTech ( tech_matdet , side , state_enabled ) ;
3852: LD_INT 7
3854: PPUSH
3855: LD_VAR 0 3
3859: PPUSH
3860: LD_INT 1
3862: PPUSH
3863: CALL_OW 322
// SetTech ( tech_lassight , side , state_enabled ) ;
3867: LD_INT 12
3869: PPUSH
3870: LD_VAR 0 3
3874: PPUSH
3875: LD_INT 1
3877: PPUSH
3878: CALL_OW 322
// SetTech ( tech_hidcam , side , state_enabled ) ;
3882: LD_INT 17
3884: PPUSH
3885: LD_VAR 0 3
3889: PPUSH
3890: LD_INT 1
3892: PPUSH
3893: CALL_OW 322
// SetTech ( tech_remcharge , side , state_enabled ) ;
3897: LD_INT 18
3899: PPUSH
3900: LD_VAR 0 3
3904: PPUSH
3905: LD_INT 1
3907: PPUSH
3908: CALL_OW 322
// SetTech ( tech_opto1 , side , state_enabled ) ;
3912: LD_INT 60
3914: PPUSH
3915: LD_VAR 0 3
3919: PPUSH
3920: LD_INT 1
3922: PPUSH
3923: CALL_OW 322
// SetTech ( tech_ai , side , state_enabled ) ;
3927: LD_INT 32
3929: PPUSH
3930: LD_VAR 0 3
3934: PPUSH
3935: LD_INT 1
3937: PPUSH
3938: CALL_OW 322
// SetTech ( tech_matpred , side , state_enabled ) ;
3942: LD_INT 9
3944: PPUSH
3945: LD_VAR 0 3
3949: PPUSH
3950: LD_INT 1
3952: PPUSH
3953: CALL_OW 322
// SetTech ( tech_comp1 , side , state_enabled ) ;
3957: LD_INT 57
3959: PPUSH
3960: LD_VAR 0 3
3964: PPUSH
3965: LD_INT 1
3967: PPUSH
3968: CALL_OW 322
// SetTech ( tech_taufield , side , state_enabled ) ;
3972: LD_INT 30
3974: PPUSH
3975: LD_VAR 0 3
3979: PPUSH
3980: LD_INT 1
3982: PPUSH
3983: CALL_OW 322
// SetTech ( tech_limteleport , side , state_enabled ) ;
3987: LD_INT 37
3989: PPUSH
3990: LD_VAR 0 3
3994: PPUSH
3995: LD_INT 1
3997: PPUSH
3998: CALL_OW 322
// SetTech ( tech_st1 , side , state_enabled ) ;
4002: LD_INT 63
4004: PPUSH
4005: LD_VAR 0 3
4009: PPUSH
4010: LD_INT 1
4012: PPUSH
4013: CALL_OW 322
// SetTech ( tech_apeneural , side , state_enabled ) ;
4017: LD_INT 3
4019: PPUSH
4020: LD_VAR 0 3
4024: PPUSH
4025: LD_INT 1
4027: PPUSH
4028: CALL_OW 322
// SetTech ( tech_apebrain , side , state_enabled ) ;
4032: LD_INT 4
4034: PPUSH
4035: LD_VAR 0 3
4039: PPUSH
4040: LD_INT 1
4042: PPUSH
4043: CALL_OW 322
// SetTech ( tech_stimdrugs , side , state_enabled ) ;
4047: LD_INT 5
4049: PPUSH
4050: LD_VAR 0 3
4054: PPUSH
4055: LD_INT 1
4057: PPUSH
4058: CALL_OW 322
// SetTech ( tech_bio1 , side , state_enabled ) ;
4062: LD_INT 66
4064: PPUSH
4065: LD_VAR 0 3
4069: PPUSH
4070: LD_INT 1
4072: PPUSH
4073: CALL_OW 322
// SetTech ( tech_sibpow , side , state_enabled ) ;
4077: LD_INT 21
4079: PPUSH
4080: LD_VAR 0 3
4084: PPUSH
4085: LD_INT 1
4087: PPUSH
4088: CALL_OW 322
// SetTech ( tech_sibeng , side , state_enabled ) ;
4092: LD_INT 22
4094: PPUSH
4095: LD_VAR 0 3
4099: PPUSH
4100: LD_INT 1
4102: PPUSH
4103: CALL_OW 322
// SetTech ( tech_sibloc , side , state_enabled ) ;
4107: LD_INT 19
4109: PPUSH
4110: LD_VAR 0 3
4114: PPUSH
4115: LD_INT 1
4117: PPUSH
4118: CALL_OW 322
// SetTech ( tech_sib1 , side , state_enabled ) ;
4122: LD_INT 54
4124: PPUSH
4125: LD_VAR 0 3
4129: PPUSH
4130: LD_INT 1
4132: PPUSH
4133: CALL_OW 322
// SetTech ( tech_sib2 , side , state_enabled ) ;
4137: LD_INT 55
4139: PPUSH
4140: LD_VAR 0 3
4144: PPUSH
4145: LD_INT 1
4147: PPUSH
4148: CALL_OW 322
// SetRestrict ( b_depot , side , true ) ;
4152: LD_INT 0
4154: PPUSH
4155: LD_VAR 0 3
4159: PPUSH
4160: LD_INT 1
4162: PPUSH
4163: CALL_OW 324
// SetRestrict ( b_warehouse , side , true ) ;
4167: LD_INT 1
4169: PPUSH
4170: LD_VAR 0 3
4174: PPUSH
4175: LD_INT 1
4177: PPUSH
4178: CALL_OW 324
// SetRestrict ( b_workshop , side , true ) ;
4182: LD_INT 2
4184: PPUSH
4185: LD_VAR 0 3
4189: PPUSH
4190: LD_INT 1
4192: PPUSH
4193: CALL_OW 324
// SetRestrict ( b_factory , side , true ) ;
4197: LD_INT 3
4199: PPUSH
4200: LD_VAR 0 3
4204: PPUSH
4205: LD_INT 1
4207: PPUSH
4208: CALL_OW 324
// SetRestrict ( b_armoury , side , true ) ;
4212: LD_INT 4
4214: PPUSH
4215: LD_VAR 0 3
4219: PPUSH
4220: LD_INT 1
4222: PPUSH
4223: CALL_OW 324
// SetRestrict ( b_barracks , side , true ) ;
4227: LD_INT 5
4229: PPUSH
4230: LD_VAR 0 3
4234: PPUSH
4235: LD_INT 1
4237: PPUSH
4238: CALL_OW 324
// SetRestrict ( b_lab , side , true ) ;
4242: LD_INT 6
4244: PPUSH
4245: LD_VAR 0 3
4249: PPUSH
4250: LD_INT 1
4252: PPUSH
4253: CALL_OW 324
// SetRestrict ( b_lab_half , side , true ) ;
4257: LD_INT 7
4259: PPUSH
4260: LD_VAR 0 3
4264: PPUSH
4265: LD_INT 1
4267: PPUSH
4268: CALL_OW 324
// SetRestrict ( b_lab_full , side , true ) ;
4272: LD_INT 8
4274: PPUSH
4275: LD_VAR 0 3
4279: PPUSH
4280: LD_INT 1
4282: PPUSH
4283: CALL_OW 324
// SetRestrict ( b_lab_weapon , side , true ) ;
4287: LD_INT 10
4289: PPUSH
4290: LD_VAR 0 3
4294: PPUSH
4295: LD_INT 1
4297: PPUSH
4298: CALL_OW 324
// SetRestrict ( b_lab_siberium , side , true ) ;
4302: LD_INT 11
4304: PPUSH
4305: LD_VAR 0 3
4309: PPUSH
4310: LD_INT 1
4312: PPUSH
4313: CALL_OW 324
// SetRestrict ( b_lab_computer , side , true ) ;
4317: LD_INT 12
4319: PPUSH
4320: LD_VAR 0 3
4324: PPUSH
4325: LD_INT 1
4327: PPUSH
4328: CALL_OW 324
// SetRestrict ( b_lab_biological , side , true ) ;
4332: LD_INT 13
4334: PPUSH
4335: LD_VAR 0 3
4339: PPUSH
4340: LD_INT 1
4342: PPUSH
4343: CALL_OW 324
// SetRestrict ( b_lab_spacetime , side , true ) ;
4347: LD_INT 14
4349: PPUSH
4350: LD_VAR 0 3
4354: PPUSH
4355: LD_INT 1
4357: PPUSH
4358: CALL_OW 324
// SetRestrict ( b_lab_opto , side , true ) ;
4362: LD_INT 15
4364: PPUSH
4365: LD_VAR 0 3
4369: PPUSH
4370: LD_INT 1
4372: PPUSH
4373: CALL_OW 324
// SetRestrict ( b_ext_track , side , true ) ;
4377: LD_INT 16
4379: PPUSH
4380: LD_VAR 0 3
4384: PPUSH
4385: LD_INT 1
4387: PPUSH
4388: CALL_OW 324
// SetRestrict ( b_ext_gun , side , true ) ;
4392: LD_INT 17
4394: PPUSH
4395: LD_VAR 0 3
4399: PPUSH
4400: LD_INT 1
4402: PPUSH
4403: CALL_OW 324
// SetRestrict ( b_ext_rocket , side , true ) ;
4407: LD_INT 18
4409: PPUSH
4410: LD_VAR 0 3
4414: PPUSH
4415: LD_INT 1
4417: PPUSH
4418: CALL_OW 324
// SetRestrict ( b_ext_noncombat , side , true ) ;
4422: LD_INT 19
4424: PPUSH
4425: LD_VAR 0 3
4429: PPUSH
4430: LD_INT 1
4432: PPUSH
4433: CALL_OW 324
// SetRestrict ( b_ext_radar , side , true ) ;
4437: LD_INT 20
4439: PPUSH
4440: LD_VAR 0 3
4444: PPUSH
4445: LD_INT 1
4447: PPUSH
4448: CALL_OW 324
// SetRestrict ( b_ext_siberium , side , true ) ;
4452: LD_INT 21
4454: PPUSH
4455: LD_VAR 0 3
4459: PPUSH
4460: LD_INT 1
4462: PPUSH
4463: CALL_OW 324
// SetRestrict ( b_ext_stitch , side , true ) ;
4467: LD_INT 23
4469: PPUSH
4470: LD_VAR 0 3
4474: PPUSH
4475: LD_INT 1
4477: PPUSH
4478: CALL_OW 324
// SetRestrict ( b_oil_power , side , true ) ;
4482: LD_INT 26
4484: PPUSH
4485: LD_VAR 0 3
4489: PPUSH
4490: LD_INT 1
4492: PPUSH
4493: CALL_OW 324
// SetRestrict ( b_solar_power , side , true ) ;
4497: LD_INT 27
4499: PPUSH
4500: LD_VAR 0 3
4504: PPUSH
4505: LD_INT 1
4507: PPUSH
4508: CALL_OW 324
// SetRestrict ( b_siberite_power , side , true ) ;
4512: LD_INT 28
4514: PPUSH
4515: LD_VAR 0 3
4519: PPUSH
4520: LD_INT 1
4522: PPUSH
4523: CALL_OW 324
// SetRestrict ( b_oil_mine , side , true ) ;
4527: LD_INT 29
4529: PPUSH
4530: LD_VAR 0 3
4534: PPUSH
4535: LD_INT 1
4537: PPUSH
4538: CALL_OW 324
// SetRestrict ( b_siberite_mine , side , true ) ;
4542: LD_INT 30
4544: PPUSH
4545: LD_VAR 0 3
4549: PPUSH
4550: LD_INT 1
4552: PPUSH
4553: CALL_OW 324
// SetRestrict ( b_breastwork , side , true ) ;
4557: LD_INT 31
4559: PPUSH
4560: LD_VAR 0 3
4564: PPUSH
4565: LD_INT 1
4567: PPUSH
4568: CALL_OW 324
// SetRestrict ( b_bunker , side , true ) ;
4572: LD_INT 32
4574: PPUSH
4575: LD_VAR 0 3
4579: PPUSH
4580: LD_INT 1
4582: PPUSH
4583: CALL_OW 324
// SetRestrict ( b_turret , side , true ) ;
4587: LD_INT 33
4589: PPUSH
4590: LD_VAR 0 3
4594: PPUSH
4595: LD_INT 1
4597: PPUSH
4598: CALL_OW 324
// SetRestrict ( b_control_tower , side , true ) ;
4602: LD_INT 36
4604: PPUSH
4605: LD_VAR 0 3
4609: PPUSH
4610: LD_INT 1
4612: PPUSH
4613: CALL_OW 324
// end ; 6 :
4617: GO 5627
4619: LD_INT 6
4621: DOUBLE
4622: EQUAL
4623: IFTRUE 4627
4625: GO 5552
4627: POP
// begin SetTech ( tech_solpow , side , state_enabled ) ;
4628: LD_INT 35
4630: PPUSH
4631: LD_VAR 0 3
4635: PPUSH
4636: LD_INT 1
4638: PPUSH
4639: CALL_OW 322
// SetTech ( tech_soleng , side , state_enabled ) ;
4643: LD_INT 45
4645: PPUSH
4646: LD_VAR 0 3
4650: PPUSH
4651: LD_INT 1
4653: PPUSH
4654: CALL_OW 322
// SetTech ( tech_oilpow , side , state_enabled ) ;
4658: LD_INT 46
4660: PPUSH
4661: LD_VAR 0 3
4665: PPUSH
4666: LD_INT 1
4668: PPUSH
4669: CALL_OW 322
// SetTech ( tech_oileng , side , state_enabled ) ;
4673: LD_INT 47
4675: PPUSH
4676: LD_VAR 0 3
4680: PPUSH
4681: LD_INT 1
4683: PPUSH
4684: CALL_OW 322
// SetTech ( tech_apelang , side , state_enabled ) ;
4688: LD_INT 1
4690: PPUSH
4691: LD_VAR 0 3
4695: PPUSH
4696: LD_INT 1
4698: PPUSH
4699: CALL_OW 322
// SetTech ( tech_apepsych , side , state_enabled ) ;
4703: LD_INT 2
4705: PPUSH
4706: LD_VAR 0 3
4710: PPUSH
4711: LD_INT 1
4713: PPUSH
4714: CALL_OW 322
// SetTech ( tech_apeagres , side , state_enabled ) ;
4718: LD_INT 11
4720: PPUSH
4721: LD_VAR 0 3
4725: PPUSH
4726: LD_INT 1
4728: PPUSH
4729: CALL_OW 322
// SetTech ( tech_sibdet , side , state_enabled ) ;
4733: LD_INT 20
4735: PPUSH
4736: LD_VAR 0 3
4740: PPUSH
4741: LD_INT 1
4743: PPUSH
4744: CALL_OW 322
// SetTech ( tech_tech1 , side , state_enabled ) ;
4748: LD_INT 48
4750: PPUSH
4751: LD_VAR 0 3
4755: PPUSH
4756: LD_INT 1
4758: PPUSH
4759: CALL_OW 322
// SetTech ( tech_tech2 , side , state_enabled ) ;
4763: LD_INT 49
4765: PPUSH
4766: LD_VAR 0 3
4770: PPUSH
4771: LD_INT 1
4773: PPUSH
4774: CALL_OW 322
// SetTech ( tech_tech3 , side , state_enabled ) ;
4778: LD_INT 50
4780: PPUSH
4781: LD_VAR 0 3
4785: PPUSH
4786: LD_INT 1
4788: PPUSH
4789: CALL_OW 322
// SetTech ( tech_gatling , side , state_enabled ) ;
4793: LD_INT 69
4795: PPUSH
4796: LD_VAR 0 3
4800: PPUSH
4801: LD_INT 1
4803: PPUSH
4804: CALL_OW 322
// SetTech ( tech_gun , side , state_enabled ) ;
4808: LD_INT 39
4810: PPUSH
4811: LD_VAR 0 3
4815: PPUSH
4816: LD_INT 1
4818: PPUSH
4819: CALL_OW 322
// SetTech ( tech_advmet , side , state_enabled ) ;
4823: LD_INT 34
4825: PPUSH
4826: LD_VAR 0 3
4830: PPUSH
4831: LD_INT 1
4833: PPUSH
4834: CALL_OW 322
// SetTech ( tech_explos , side , state_enabled ) ;
4838: LD_INT 42
4840: PPUSH
4841: LD_VAR 0 3
4845: PPUSH
4846: LD_INT 1
4848: PPUSH
4849: CALL_OW 322
// SetTech ( tech_bazooka , side , state_enabled ) ;
4853: LD_INT 44
4855: PPUSH
4856: LD_VAR 0 3
4860: PPUSH
4861: LD_INT 1
4863: PPUSH
4864: CALL_OW 322
// SetTech ( tech_mortar , side , state_enabled ) ;
4868: LD_INT 41
4870: PPUSH
4871: LD_VAR 0 3
4875: PPUSH
4876: LD_INT 1
4878: PPUSH
4879: CALL_OW 322
// SetTech ( tech_soporific , side , state_enabled ) ;
4883: LD_INT 13
4885: PPUSH
4886: LD_VAR 0 3
4890: PPUSH
4891: LD_INT 1
4893: PPUSH
4894: CALL_OW 322
// SetTech ( tech_rocket , side , state_enabled ) ;
4898: LD_INT 40
4900: PPUSH
4901: LD_VAR 0 3
4905: PPUSH
4906: LD_INT 1
4908: PPUSH
4909: CALL_OW 322
// SetTech ( tech_selfdest , side , state_enabled ) ;
4913: LD_INT 43
4915: PPUSH
4916: LD_VAR 0 3
4920: PPUSH
4921: LD_INT 1
4923: PPUSH
4924: CALL_OW 322
// SetTech ( tech_flame , side , state_enabled ) ;
4928: LD_INT 70
4930: PPUSH
4931: LD_VAR 0 3
4935: PPUSH
4936: LD_INT 1
4938: PPUSH
4939: CALL_OW 322
// SetTech ( tech_behemoth , side , state_enabled ) ;
4943: LD_INT 23
4945: PPUSH
4946: LD_VAR 0 3
4950: PPUSH
4951: LD_INT 1
4953: PPUSH
4954: CALL_OW 322
// SetTech ( tech_weap1 , side , state_enabled ) ;
4958: LD_INT 51
4960: PPUSH
4961: LD_VAR 0 3
4965: PPUSH
4966: LD_INT 1
4968: PPUSH
4969: CALL_OW 322
// SetTech ( tech_weap2 , side , state_enabled ) ;
4973: LD_INT 52
4975: PPUSH
4976: LD_VAR 0 3
4980: PPUSH
4981: LD_INT 1
4983: PPUSH
4984: CALL_OW 322
// SetTech ( tech_radar , side , state_enabled ) ;
4988: LD_INT 6
4990: PPUSH
4991: LD_VAR 0 3
4995: PPUSH
4996: LD_INT 1
4998: PPUSH
4999: CALL_OW 322
// SetTech ( tech_remcont , side , state_enabled ) ;
5003: LD_INT 15
5005: PPUSH
5006: LD_VAR 0 3
5010: PPUSH
5011: LD_INT 1
5013: PPUSH
5014: CALL_OW 322
// SetTech ( tech_matdet , side , state_enabled ) ;
5018: LD_INT 7
5020: PPUSH
5021: LD_VAR 0 3
5025: PPUSH
5026: LD_INT 1
5028: PPUSH
5029: CALL_OW 322
// SetTech ( tech_lassight , side , state_enabled ) ;
5033: LD_INT 12
5035: PPUSH
5036: LD_VAR 0 3
5040: PPUSH
5041: LD_INT 1
5043: PPUSH
5044: CALL_OW 322
// SetTech ( tech_laser , side , state_enabled ) ;
5048: LD_INT 10
5050: PPUSH
5051: LD_VAR 0 3
5055: PPUSH
5056: LD_INT 1
5058: PPUSH
5059: CALL_OW 322
// SetTech ( tech_hidcam , side , state_enabled ) ;
5063: LD_INT 17
5065: PPUSH
5066: LD_VAR 0 3
5070: PPUSH
5071: LD_INT 1
5073: PPUSH
5074: CALL_OW 322
// SetTech ( tech_remcharge , side , state_enabled ) ;
5078: LD_INT 18
5080: PPUSH
5081: LD_VAR 0 3
5085: PPUSH
5086: LD_INT 1
5088: PPUSH
5089: CALL_OW 322
// SetTech ( tech_opto1 , side , state_enabled ) ;
5093: LD_INT 60
5095: PPUSH
5096: LD_VAR 0 3
5100: PPUSH
5101: LD_INT 1
5103: PPUSH
5104: CALL_OW 322
// SetTech ( tech_opto2 , side , state_enabled ) ;
5108: LD_INT 61
5110: PPUSH
5111: LD_VAR 0 3
5115: PPUSH
5116: LD_INT 1
5118: PPUSH
5119: CALL_OW 322
// SetTech ( tech_ai , side , state_enabled ) ;
5123: LD_INT 32
5125: PPUSH
5126: LD_VAR 0 3
5130: PPUSH
5131: LD_INT 1
5133: PPUSH
5134: CALL_OW 322
// SetTech ( tech_advai , side , state_enabled ) ;
5138: LD_INT 27
5140: PPUSH
5141: LD_VAR 0 3
5145: PPUSH
5146: LD_INT 1
5148: PPUSH
5149: CALL_OW 322
// SetTech ( tech_advchassis , side , state_enabled ) ;
5153: LD_INT 36
5155: PPUSH
5156: LD_VAR 0 3
5160: PPUSH
5161: LD_INT 1
5163: PPUSH
5164: CALL_OW 322
// SetTech ( tech_virus , side , state_enabled ) ;
5168: LD_INT 33
5170: PPUSH
5171: LD_VAR 0 3
5175: PPUSH
5176: LD_INT 1
5178: PPUSH
5179: CALL_OW 322
// SetTech ( tech_matpred , side , state_enabled ) ;
5183: LD_INT 9
5185: PPUSH
5186: LD_VAR 0 3
5190: PPUSH
5191: LD_INT 1
5193: PPUSH
5194: CALL_OW 322
// SetTech ( tech_targteleport , side , state_enabled ) ;
5198: LD_INT 38
5200: PPUSH
5201: LD_VAR 0 3
5205: PPUSH
5206: LD_INT 1
5208: PPUSH
5209: CALL_OW 322
// SetTech ( tech_comp1 , side , state_enabled ) ;
5213: LD_INT 57
5215: PPUSH
5216: LD_VAR 0 3
5220: PPUSH
5221: LD_INT 1
5223: PPUSH
5224: CALL_OW 322
// SetTech ( tech_comp2 , side , state_enabled ) ;
5228: LD_INT 58
5230: PPUSH
5231: LD_VAR 0 3
5235: PPUSH
5236: LD_INT 1
5238: PPUSH
5239: CALL_OW 322
// SetTech ( tech_taurad , side , state_enabled ) ;
5243: LD_INT 28
5245: PPUSH
5246: LD_VAR 0 3
5250: PPUSH
5251: LD_INT 1
5253: PPUSH
5254: CALL_OW 322
// SetTech ( tech_spacanom , side , state_enabled ) ;
5258: LD_INT 29
5260: PPUSH
5261: LD_VAR 0 3
5265: PPUSH
5266: LD_INT 1
5268: PPUSH
5269: CALL_OW 322
// SetTech ( tech_taufield , side , state_enabled ) ;
5273: LD_INT 30
5275: PPUSH
5276: LD_VAR 0 3
5280: PPUSH
5281: LD_INT 1
5283: PPUSH
5284: CALL_OW 322
// SetTech ( tech_limteleport , side , state_enabled ) ;
5288: LD_INT 37
5290: PPUSH
5291: LD_VAR 0 3
5295: PPUSH
5296: LD_INT 1
5298: PPUSH
5299: CALL_OW 322
// SetTech ( tech_st1 , side , state_enabled ) ;
5303: LD_INT 63
5305: PPUSH
5306: LD_VAR 0 3
5310: PPUSH
5311: LD_INT 1
5313: PPUSH
5314: CALL_OW 322
// SetTech ( tech_st2 , side , state_enabled ) ;
5318: LD_INT 64
5320: PPUSH
5321: LD_VAR 0 3
5325: PPUSH
5326: LD_INT 1
5328: PPUSH
5329: CALL_OW 322
// SetTech ( tech_apeneural , side , state_enabled ) ;
5333: LD_INT 3
5335: PPUSH
5336: LD_VAR 0 3
5340: PPUSH
5341: LD_INT 1
5343: PPUSH
5344: CALL_OW 322
// SetTech ( tech_apebrain , side , state_enabled ) ;
5348: LD_INT 4
5350: PPUSH
5351: LD_VAR 0 3
5355: PPUSH
5356: LD_INT 1
5358: PPUSH
5359: CALL_OW 322
// SetTech ( tech_stimdrugs , side , state_enabled ) ;
5363: LD_INT 5
5365: PPUSH
5366: LD_VAR 0 3
5370: PPUSH
5371: LD_INT 1
5373: PPUSH
5374: CALL_OW 322
// SetTech ( tech_biodet , side , state_enabled ) ;
5378: LD_INT 8
5380: PPUSH
5381: LD_VAR 0 3
5385: PPUSH
5386: LD_INT 1
5388: PPUSH
5389: CALL_OW 322
// SetTech ( tech_bio1 , side , state_enabled ) ;
5393: LD_INT 66
5395: PPUSH
5396: LD_VAR 0 3
5400: PPUSH
5401: LD_INT 1
5403: PPUSH
5404: CALL_OW 322
// SetTech ( tech_bio2 , side , state_enabled ) ;
5408: LD_INT 67
5410: PPUSH
5411: LD_VAR 0 3
5415: PPUSH
5416: LD_INT 1
5418: PPUSH
5419: CALL_OW 322
// SetTech ( tech_sibpow , side , state_enabled ) ;
5423: LD_INT 21
5425: PPUSH
5426: LD_VAR 0 3
5430: PPUSH
5431: LD_INT 1
5433: PPUSH
5434: CALL_OW 322
// SetTech ( tech_sibeng , side , state_enabled ) ;
5438: LD_INT 22
5440: PPUSH
5441: LD_VAR 0 3
5445: PPUSH
5446: LD_INT 1
5448: PPUSH
5449: CALL_OW 322
// SetTech ( tech_sibloc , side , state_enabled ) ;
5453: LD_INT 19
5455: PPUSH
5456: LD_VAR 0 3
5460: PPUSH
5461: LD_INT 1
5463: PPUSH
5464: CALL_OW 322
// SetTech ( tech_sibcontam , side , state_enabled ) ;
5468: LD_INT 26
5470: PPUSH
5471: LD_VAR 0 3
5475: PPUSH
5476: LD_INT 1
5478: PPUSH
5479: CALL_OW 322
// SetTech ( tech_sib1 , side , state_enabled ) ;
5483: LD_INT 54
5485: PPUSH
5486: LD_VAR 0 3
5490: PPUSH
5491: LD_INT 1
5493: PPUSH
5494: CALL_OW 322
// SetTech ( tech_sib2 , side , state_enabled ) ;
5498: LD_INT 55
5500: PPUSH
5501: LD_VAR 0 3
5505: PPUSH
5506: LD_INT 1
5508: PPUSH
5509: CALL_OW 322
// for i = 0 to 39 do
5513: LD_ADDR_VAR 0 4
5517: PUSH
5518: DOUBLE
5519: LD_INT 0
5521: DEC
5522: ST_TO_ADDR
5523: LD_INT 39
5525: PUSH
5526: FOR_TO
5527: IFFALSE 5548
// SetRestrict ( i , side , true ) ;
5529: LD_VAR 0 4
5533: PPUSH
5534: LD_VAR 0 3
5538: PPUSH
5539: LD_INT 1
5541: PPUSH
5542: CALL_OW 324
5546: GO 5526
5548: POP
5549: POP
// end ; else
5550: GO 5627
5552: POP
// begin for i = 1 to 72 do
5553: LD_ADDR_VAR 0 4
5557: PUSH
5558: DOUBLE
5559: LD_INT 1
5561: DEC
5562: ST_TO_ADDR
5563: LD_INT 72
5565: PUSH
5566: FOR_TO
5567: IFFALSE 5588
// SetTech ( i , side , state_enabled ) ;
5569: LD_VAR 0 4
5573: PPUSH
5574: LD_VAR 0 3
5578: PPUSH
5579: LD_INT 1
5581: PPUSH
5582: CALL_OW 322
5586: GO 5566
5588: POP
5589: POP
// for i = 0 to 39 do
5590: LD_ADDR_VAR 0 4
5594: PUSH
5595: DOUBLE
5596: LD_INT 0
5598: DEC
5599: ST_TO_ADDR
5600: LD_INT 39
5602: PUSH
5603: FOR_TO
5604: IFFALSE 5625
// SetRestrict ( i , side , true ) ;
5606: LD_VAR 0 4
5610: PPUSH
5611: LD_VAR 0 3
5615: PPUSH
5616: LD_INT 1
5618: PPUSH
5619: CALL_OW 324
5623: GO 5603
5625: POP
5626: POP
// end ; end ; end ;
5627: GO 1632
5629: POP
5630: POP
// end ;
5631: LD_VAR 0 2
5635: RET
// function init_map ; var i , j ; begin
5636: LD_INT 0
5638: PPUSH
5639: PPUSH
5640: PPUSH
// normal_oil_deposits_locations := [ [ 17 , 4 ] , [ 119 , 4 ] , [ 196 , 3 ] , [ 247 , 89 ] , [ 299 , 188 ] , [ 214 , 195 ] , [ 111 , 194 ] , [ 64 , 109 ] ] ;
5641: LD_ADDR_EXP 26
5645: PUSH
5646: LD_INT 17
5648: PUSH
5649: LD_INT 4
5651: PUSH
5652: EMPTY
5653: LIST
5654: LIST
5655: PUSH
5656: LD_INT 119
5658: PUSH
5659: LD_INT 4
5661: PUSH
5662: EMPTY
5663: LIST
5664: LIST
5665: PUSH
5666: LD_INT 196
5668: PUSH
5669: LD_INT 3
5671: PUSH
5672: EMPTY
5673: LIST
5674: LIST
5675: PUSH
5676: LD_INT 247
5678: PUSH
5679: LD_INT 89
5681: PUSH
5682: EMPTY
5683: LIST
5684: LIST
5685: PUSH
5686: LD_INT 299
5688: PUSH
5689: LD_INT 188
5691: PUSH
5692: EMPTY
5693: LIST
5694: LIST
5695: PUSH
5696: LD_INT 214
5698: PUSH
5699: LD_INT 195
5701: PUSH
5702: EMPTY
5703: LIST
5704: LIST
5705: PUSH
5706: LD_INT 111
5708: PUSH
5709: LD_INT 194
5711: PUSH
5712: EMPTY
5713: LIST
5714: LIST
5715: PUSH
5716: LD_INT 64
5718: PUSH
5719: LD_INT 109
5721: PUSH
5722: EMPTY
5723: LIST
5724: LIST
5725: PUSH
5726: EMPTY
5727: LIST
5728: LIST
5729: LIST
5730: LIST
5731: LIST
5732: LIST
5733: LIST
5734: LIST
5735: ST_TO_ADDR
// extra_oil_deposits_locations := [ [ [ 17 , 4 ] , [ 26 , 4 ] ] , [ [ 119 , 4 ] , [ 128 , 8 ] ] , [ [ 196 , 3 ] , [ 202 , 6 ] ] , [ [ 247 , 89 ] , [ 253 , 96 ] ] , [ [ 299 , 188 ] , [ 296 , 181 ] ] , [ [ 214 , 195 ] , [ 218 , 191 ] ] , [ [ 111 , 194 ] , [ 120 , 194 ] ] , [ [ 64 , 109 ] , [ 72 , 116 ] ] ] ;
5736: LD_ADDR_EXP 27
5740: PUSH
5741: LD_INT 17
5743: PUSH
5744: LD_INT 4
5746: PUSH
5747: EMPTY
5748: LIST
5749: LIST
5750: PUSH
5751: LD_INT 26
5753: PUSH
5754: LD_INT 4
5756: PUSH
5757: EMPTY
5758: LIST
5759: LIST
5760: PUSH
5761: EMPTY
5762: LIST
5763: LIST
5764: PUSH
5765: LD_INT 119
5767: PUSH
5768: LD_INT 4
5770: PUSH
5771: EMPTY
5772: LIST
5773: LIST
5774: PUSH
5775: LD_INT 128
5777: PUSH
5778: LD_INT 8
5780: PUSH
5781: EMPTY
5782: LIST
5783: LIST
5784: PUSH
5785: EMPTY
5786: LIST
5787: LIST
5788: PUSH
5789: LD_INT 196
5791: PUSH
5792: LD_INT 3
5794: PUSH
5795: EMPTY
5796: LIST
5797: LIST
5798: PUSH
5799: LD_INT 202
5801: PUSH
5802: LD_INT 6
5804: PUSH
5805: EMPTY
5806: LIST
5807: LIST
5808: PUSH
5809: EMPTY
5810: LIST
5811: LIST
5812: PUSH
5813: LD_INT 247
5815: PUSH
5816: LD_INT 89
5818: PUSH
5819: EMPTY
5820: LIST
5821: LIST
5822: PUSH
5823: LD_INT 253
5825: PUSH
5826: LD_INT 96
5828: PUSH
5829: EMPTY
5830: LIST
5831: LIST
5832: PUSH
5833: EMPTY
5834: LIST
5835: LIST
5836: PUSH
5837: LD_INT 299
5839: PUSH
5840: LD_INT 188
5842: PUSH
5843: EMPTY
5844: LIST
5845: LIST
5846: PUSH
5847: LD_INT 296
5849: PUSH
5850: LD_INT 181
5852: PUSH
5853: EMPTY
5854: LIST
5855: LIST
5856: PUSH
5857: EMPTY
5858: LIST
5859: LIST
5860: PUSH
5861: LD_INT 214
5863: PUSH
5864: LD_INT 195
5866: PUSH
5867: EMPTY
5868: LIST
5869: LIST
5870: PUSH
5871: LD_INT 218
5873: PUSH
5874: LD_INT 191
5876: PUSH
5877: EMPTY
5878: LIST
5879: LIST
5880: PUSH
5881: EMPTY
5882: LIST
5883: LIST
5884: PUSH
5885: LD_INT 111
5887: PUSH
5888: LD_INT 194
5890: PUSH
5891: EMPTY
5892: LIST
5893: LIST
5894: PUSH
5895: LD_INT 120
5897: PUSH
5898: LD_INT 194
5900: PUSH
5901: EMPTY
5902: LIST
5903: LIST
5904: PUSH
5905: EMPTY
5906: LIST
5907: LIST
5908: PUSH
5909: LD_INT 64
5911: PUSH
5912: LD_INT 109
5914: PUSH
5915: EMPTY
5916: LIST
5917: LIST
5918: PUSH
5919: LD_INT 72
5921: PUSH
5922: LD_INT 116
5924: PUSH
5925: EMPTY
5926: LIST
5927: LIST
5928: PUSH
5929: EMPTY
5930: LIST
5931: LIST
5932: PUSH
5933: EMPTY
5934: LIST
5935: LIST
5936: LIST
5937: LIST
5938: LIST
5939: LIST
5940: LIST
5941: LIST
5942: ST_TO_ADDR
// normal_sib_deposits_locations := [ [ 12 , 9 ] , [ 107 , 4 ] , [ 214 , 14 ] , [ 258 , 108 ] , [ 301 , 197 ] , [ 204 , 195 ] , [ 104 , 188 ] , [ 56 , 96 ] ] ;
5943: LD_ADDR_EXP 28
5947: PUSH
5948: LD_INT 12
5950: PUSH
5951: LD_INT 9
5953: PUSH
5954: EMPTY
5955: LIST
5956: LIST
5957: PUSH
5958: LD_INT 107
5960: PUSH
5961: LD_INT 4
5963: PUSH
5964: EMPTY
5965: LIST
5966: LIST
5967: PUSH
5968: LD_INT 214
5970: PUSH
5971: LD_INT 14
5973: PUSH
5974: EMPTY
5975: LIST
5976: LIST
5977: PUSH
5978: LD_INT 258
5980: PUSH
5981: LD_INT 108
5983: PUSH
5984: EMPTY
5985: LIST
5986: LIST
5987: PUSH
5988: LD_INT 301
5990: PUSH
5991: LD_INT 197
5993: PUSH
5994: EMPTY
5995: LIST
5996: LIST
5997: PUSH
5998: LD_INT 204
6000: PUSH
6001: LD_INT 195
6003: PUSH
6004: EMPTY
6005: LIST
6006: LIST
6007: PUSH
6008: LD_INT 104
6010: PUSH
6011: LD_INT 188
6013: PUSH
6014: EMPTY
6015: LIST
6016: LIST
6017: PUSH
6018: LD_INT 56
6020: PUSH
6021: LD_INT 96
6023: PUSH
6024: EMPTY
6025: LIST
6026: LIST
6027: PUSH
6028: EMPTY
6029: LIST
6030: LIST
6031: LIST
6032: LIST
6033: LIST
6034: LIST
6035: LIST
6036: LIST
6037: ST_TO_ADDR
// extra_sib_deposits_locations := [ [ [ 12 , 9 ] , [ 14 , 20 ] ] , [ [ 107 , 4 ] , [ 99 , 5 ] ] , [ [ 214 , 14 ] , [ 219 , 22 ] ] , [ [ 258 , 108 ] , [ 257 , 113 ] ] , [ [ 301 , 197 ] , [ 294 , 197 ] ] , [ [ 204 , 195 ] , [ 197 , 194 ] ] , [ [ 104 , 188 ] , [ 98 , 181 ] ] , [ [ 56 , 96 ] , [ 55 , 87 ] ] ] ;
6038: LD_ADDR_EXP 29
6042: PUSH
6043: LD_INT 12
6045: PUSH
6046: LD_INT 9
6048: PUSH
6049: EMPTY
6050: LIST
6051: LIST
6052: PUSH
6053: LD_INT 14
6055: PUSH
6056: LD_INT 20
6058: PUSH
6059: EMPTY
6060: LIST
6061: LIST
6062: PUSH
6063: EMPTY
6064: LIST
6065: LIST
6066: PUSH
6067: LD_INT 107
6069: PUSH
6070: LD_INT 4
6072: PUSH
6073: EMPTY
6074: LIST
6075: LIST
6076: PUSH
6077: LD_INT 99
6079: PUSH
6080: LD_INT 5
6082: PUSH
6083: EMPTY
6084: LIST
6085: LIST
6086: PUSH
6087: EMPTY
6088: LIST
6089: LIST
6090: PUSH
6091: LD_INT 214
6093: PUSH
6094: LD_INT 14
6096: PUSH
6097: EMPTY
6098: LIST
6099: LIST
6100: PUSH
6101: LD_INT 219
6103: PUSH
6104: LD_INT 22
6106: PUSH
6107: EMPTY
6108: LIST
6109: LIST
6110: PUSH
6111: EMPTY
6112: LIST
6113: LIST
6114: PUSH
6115: LD_INT 258
6117: PUSH
6118: LD_INT 108
6120: PUSH
6121: EMPTY
6122: LIST
6123: LIST
6124: PUSH
6125: LD_INT 257
6127: PUSH
6128: LD_INT 113
6130: PUSH
6131: EMPTY
6132: LIST
6133: LIST
6134: PUSH
6135: EMPTY
6136: LIST
6137: LIST
6138: PUSH
6139: LD_INT 301
6141: PUSH
6142: LD_INT 197
6144: PUSH
6145: EMPTY
6146: LIST
6147: LIST
6148: PUSH
6149: LD_INT 294
6151: PUSH
6152: LD_INT 197
6154: PUSH
6155: EMPTY
6156: LIST
6157: LIST
6158: PUSH
6159: EMPTY
6160: LIST
6161: LIST
6162: PUSH
6163: LD_INT 204
6165: PUSH
6166: LD_INT 195
6168: PUSH
6169: EMPTY
6170: LIST
6171: LIST
6172: PUSH
6173: LD_INT 197
6175: PUSH
6176: LD_INT 194
6178: PUSH
6179: EMPTY
6180: LIST
6181: LIST
6182: PUSH
6183: EMPTY
6184: LIST
6185: LIST
6186: PUSH
6187: LD_INT 104
6189: PUSH
6190: LD_INT 188
6192: PUSH
6193: EMPTY
6194: LIST
6195: LIST
6196: PUSH
6197: LD_INT 98
6199: PUSH
6200: LD_INT 181
6202: PUSH
6203: EMPTY
6204: LIST
6205: LIST
6206: PUSH
6207: EMPTY
6208: LIST
6209: LIST
6210: PUSH
6211: LD_INT 56
6213: PUSH
6214: LD_INT 96
6216: PUSH
6217: EMPTY
6218: LIST
6219: LIST
6220: PUSH
6221: LD_INT 55
6223: PUSH
6224: LD_INT 87
6226: PUSH
6227: EMPTY
6228: LIST
6229: LIST
6230: PUSH
6231: EMPTY
6232: LIST
6233: LIST
6234: PUSH
6235: EMPTY
6236: LIST
6237: LIST
6238: LIST
6239: LIST
6240: LIST
6241: LIST
6242: LIST
6243: LIST
6244: ST_TO_ADDR
// depot_def := [ [ 31 , 18 , 2 ] , [ 117 , 14 , 3 ] , [ 203 , 23 , 3 ] , [ 244 , 103 , 4 ] , [ 285 , 184 , 5 ] , [ 203 , 187 , 5 ] , [ 113 , 184 , 0 ] , [ 70 , 99 , 1 ] ] ;
6245: LD_ADDR_EXP 23
6249: PUSH
6250: LD_INT 31
6252: PUSH
6253: LD_INT 18
6255: PUSH
6256: LD_INT 2
6258: PUSH
6259: EMPTY
6260: LIST
6261: LIST
6262: LIST
6263: PUSH
6264: LD_INT 117
6266: PUSH
6267: LD_INT 14
6269: PUSH
6270: LD_INT 3
6272: PUSH
6273: EMPTY
6274: LIST
6275: LIST
6276: LIST
6277: PUSH
6278: LD_INT 203
6280: PUSH
6281: LD_INT 23
6283: PUSH
6284: LD_INT 3
6286: PUSH
6287: EMPTY
6288: LIST
6289: LIST
6290: LIST
6291: PUSH
6292: LD_INT 244
6294: PUSH
6295: LD_INT 103
6297: PUSH
6298: LD_INT 4
6300: PUSH
6301: EMPTY
6302: LIST
6303: LIST
6304: LIST
6305: PUSH
6306: LD_INT 285
6308: PUSH
6309: LD_INT 184
6311: PUSH
6312: LD_INT 5
6314: PUSH
6315: EMPTY
6316: LIST
6317: LIST
6318: LIST
6319: PUSH
6320: LD_INT 203
6322: PUSH
6323: LD_INT 187
6325: PUSH
6326: LD_INT 5
6328: PUSH
6329: EMPTY
6330: LIST
6331: LIST
6332: LIST
6333: PUSH
6334: LD_INT 113
6336: PUSH
6337: LD_INT 184
6339: PUSH
6340: LD_INT 0
6342: PUSH
6343: EMPTY
6344: LIST
6345: LIST
6346: LIST
6347: PUSH
6348: LD_INT 70
6350: PUSH
6351: LD_INT 99
6353: PUSH
6354: LD_INT 1
6356: PUSH
6357: EMPTY
6358: LIST
6359: LIST
6360: LIST
6361: PUSH
6362: EMPTY
6363: LIST
6364: LIST
6365: LIST
6366: LIST
6367: LIST
6368: LIST
6369: LIST
6370: LIST
6371: ST_TO_ADDR
// for i in depot_def do
6372: LD_ADDR_VAR 0 2
6376: PUSH
6377: LD_EXP 23
6381: PUSH
6382: FOR_IN
6383: IFFALSE 6457
// start_def := start_def ^ [ [ ShiftX ( i [ 1 ] , i [ 3 ] , 10 ) , ShiftY ( i [ 2 ] , i [ 3 ] , 10 ) ] ] ;
6385: LD_ADDR_EXP 25
6389: PUSH
6390: LD_EXP 25
6394: PUSH
6395: LD_VAR 0 2
6399: PUSH
6400: LD_INT 1
6402: ARRAY
6403: PPUSH
6404: LD_VAR 0 2
6408: PUSH
6409: LD_INT 3
6411: ARRAY
6412: PPUSH
6413: LD_INT 10
6415: PPUSH
6416: CALL_OW 272
6420: PUSH
6421: LD_VAR 0 2
6425: PUSH
6426: LD_INT 2
6428: ARRAY
6429: PPUSH
6430: LD_VAR 0 2
6434: PUSH
6435: LD_INT 3
6437: ARRAY
6438: PPUSH
6439: LD_INT 10
6441: PPUSH
6442: CALL_OW 273
6446: PUSH
6447: EMPTY
6448: LIST
6449: LIST
6450: PUSH
6451: EMPTY
6452: LIST
6453: ADD
6454: ST_TO_ADDR
6455: GO 6382
6457: POP
6458: POP
// breastworks_def := [ [ [ 55 , 30 , 5 ] , [ 49 , 41 , 5 ] ] , [ [ 139 , 33 , 5 ] , [ 115 , 31 , 0 ] ] , [ [ 188 , 30 , 0 ] , [ 208 , 40 , 0 ] ] , [ [ 227 , 92 , 2 ] , [ 233 , 111 , 0 ] ] , [ [ 259 , 173 , 2 ] , [ 269 , 166 , 2 ] ] , [ [ 180 , 173 , 2 ] , [ 201 , 169 , 3 ] ] , [ [ 126 , 173 , 3 ] , [ 108 , 166 , 3 ] ] , [ [ 89 , 114 , 5 ] , [ 75 , 90 , 4 ] ] ] ;
6459: LD_ADDR_EXP 24
6463: PUSH
6464: LD_INT 55
6466: PUSH
6467: LD_INT 30
6469: PUSH
6470: LD_INT 5
6472: PUSH
6473: EMPTY
6474: LIST
6475: LIST
6476: LIST
6477: PUSH
6478: LD_INT 49
6480: PUSH
6481: LD_INT 41
6483: PUSH
6484: LD_INT 5
6486: PUSH
6487: EMPTY
6488: LIST
6489: LIST
6490: LIST
6491: PUSH
6492: EMPTY
6493: LIST
6494: LIST
6495: PUSH
6496: LD_INT 139
6498: PUSH
6499: LD_INT 33
6501: PUSH
6502: LD_INT 5
6504: PUSH
6505: EMPTY
6506: LIST
6507: LIST
6508: LIST
6509: PUSH
6510: LD_INT 115
6512: PUSH
6513: LD_INT 31
6515: PUSH
6516: LD_INT 0
6518: PUSH
6519: EMPTY
6520: LIST
6521: LIST
6522: LIST
6523: PUSH
6524: EMPTY
6525: LIST
6526: LIST
6527: PUSH
6528: LD_INT 188
6530: PUSH
6531: LD_INT 30
6533: PUSH
6534: LD_INT 0
6536: PUSH
6537: EMPTY
6538: LIST
6539: LIST
6540: LIST
6541: PUSH
6542: LD_INT 208
6544: PUSH
6545: LD_INT 40
6547: PUSH
6548: LD_INT 0
6550: PUSH
6551: EMPTY
6552: LIST
6553: LIST
6554: LIST
6555: PUSH
6556: EMPTY
6557: LIST
6558: LIST
6559: PUSH
6560: LD_INT 227
6562: PUSH
6563: LD_INT 92
6565: PUSH
6566: LD_INT 2
6568: PUSH
6569: EMPTY
6570: LIST
6571: LIST
6572: LIST
6573: PUSH
6574: LD_INT 233
6576: PUSH
6577: LD_INT 111
6579: PUSH
6580: LD_INT 0
6582: PUSH
6583: EMPTY
6584: LIST
6585: LIST
6586: LIST
6587: PUSH
6588: EMPTY
6589: LIST
6590: LIST
6591: PUSH
6592: LD_INT 259
6594: PUSH
6595: LD_INT 173
6597: PUSH
6598: LD_INT 2
6600: PUSH
6601: EMPTY
6602: LIST
6603: LIST
6604: LIST
6605: PUSH
6606: LD_INT 269
6608: PUSH
6609: LD_INT 166
6611: PUSH
6612: LD_INT 2
6614: PUSH
6615: EMPTY
6616: LIST
6617: LIST
6618: LIST
6619: PUSH
6620: EMPTY
6621: LIST
6622: LIST
6623: PUSH
6624: LD_INT 180
6626: PUSH
6627: LD_INT 173
6629: PUSH
6630: LD_INT 2
6632: PUSH
6633: EMPTY
6634: LIST
6635: LIST
6636: LIST
6637: PUSH
6638: LD_INT 201
6640: PUSH
6641: LD_INT 169
6643: PUSH
6644: LD_INT 3
6646: PUSH
6647: EMPTY
6648: LIST
6649: LIST
6650: LIST
6651: PUSH
6652: EMPTY
6653: LIST
6654: LIST
6655: PUSH
6656: LD_INT 126
6658: PUSH
6659: LD_INT 173
6661: PUSH
6662: LD_INT 3
6664: PUSH
6665: EMPTY
6666: LIST
6667: LIST
6668: LIST
6669: PUSH
6670: LD_INT 108
6672: PUSH
6673: LD_INT 166
6675: PUSH
6676: LD_INT 3
6678: PUSH
6679: EMPTY
6680: LIST
6681: LIST
6682: LIST
6683: PUSH
6684: EMPTY
6685: LIST
6686: LIST
6687: PUSH
6688: LD_INT 89
6690: PUSH
6691: LD_INT 114
6693: PUSH
6694: LD_INT 5
6696: PUSH
6697: EMPTY
6698: LIST
6699: LIST
6700: LIST
6701: PUSH
6702: LD_INT 75
6704: PUSH
6705: LD_INT 90
6707: PUSH
6708: LD_INT 4
6710: PUSH
6711: EMPTY
6712: LIST
6713: LIST
6714: LIST
6715: PUSH
6716: EMPTY
6717: LIST
6718: LIST
6719: PUSH
6720: EMPTY
6721: LIST
6722: LIST
6723: LIST
6724: LIST
6725: LIST
6726: LIST
6727: LIST
6728: LIST
6729: ST_TO_ADDR
// for i in ( Side_Positions diff [ 0 ] ) do
6730: LD_ADDR_VAR 0 2
6734: PUSH
6735: LD_EXP 19
6739: PUSH
6740: LD_INT 0
6742: PUSH
6743: EMPTY
6744: LIST
6745: DIFF
6746: PUSH
6747: FOR_IN
6748: IFFALSE 6845
// if def_extra_oil_deposits then
6750: LD_EXP 38
6754: IFFALSE 6806
// for j in extra_oil_deposits_locations [ i ] do
6756: LD_ADDR_VAR 0 3
6760: PUSH
6761: LD_EXP 27
6765: PUSH
6766: LD_VAR 0 2
6770: ARRAY
6771: PUSH
6772: FOR_IN
6773: IFFALSE 6802
// CreateDepositXY ( j [ 1 ] , j [ 2 ] , mat_oil ) else
6775: LD_VAR 0 3
6779: PUSH
6780: LD_INT 1
6782: ARRAY
6783: PPUSH
6784: LD_VAR 0 3
6788: PUSH
6789: LD_INT 2
6791: ARRAY
6792: PPUSH
6793: LD_INT 2
6795: PPUSH
6796: CALL_OW 62
6800: GO 6772
6802: POP
6803: POP
6804: GO 6843
// CreateDepositXY ( normal_oil_deposits_locations [ i ] [ 1 ] , normal_oil_deposits_locations [ i ] [ 2 ] , mat_oil ) ;
6806: LD_EXP 26
6810: PUSH
6811: LD_VAR 0 2
6815: ARRAY
6816: PUSH
6817: LD_INT 1
6819: ARRAY
6820: PPUSH
6821: LD_EXP 26
6825: PUSH
6826: LD_VAR 0 2
6830: ARRAY
6831: PUSH
6832: LD_INT 2
6834: ARRAY
6835: PPUSH
6836: LD_INT 2
6838: PPUSH
6839: CALL_OW 62
6843: GO 6747
6845: POP
6846: POP
// if def_extra_sib_deposits then
6847: LD_EXP 39
6851: IFFALSE 6974
// for i in ( Side_Positions diff [ 0 ] ) do
6853: LD_ADDR_VAR 0 2
6857: PUSH
6858: LD_EXP 19
6862: PUSH
6863: LD_INT 0
6865: PUSH
6866: EMPTY
6867: LIST
6868: DIFF
6869: PUSH
6870: FOR_IN
6871: IFFALSE 6972
// if def_extra_sib_deposits = 2 then
6873: LD_EXP 39
6877: PUSH
6878: LD_INT 2
6880: EQUAL
6881: IFFALSE 6933
// for j in extra_sib_deposits_locations [ i ] do
6883: LD_ADDR_VAR 0 3
6887: PUSH
6888: LD_EXP 29
6892: PUSH
6893: LD_VAR 0 2
6897: ARRAY
6898: PUSH
6899: FOR_IN
6900: IFFALSE 6929
// CreateDepositXY ( j [ 1 ] , j [ 2 ] , mat_siberit ) else
6902: LD_VAR 0 3
6906: PUSH
6907: LD_INT 1
6909: ARRAY
6910: PPUSH
6911: LD_VAR 0 3
6915: PUSH
6916: LD_INT 2
6918: ARRAY
6919: PPUSH
6920: LD_INT 3
6922: PPUSH
6923: CALL_OW 62
6927: GO 6899
6929: POP
6930: POP
6931: GO 6970
// CreateDepositXY ( normal_sib_deposits_locations [ i ] [ 1 ] , normal_sib_deposits_locations [ i ] [ 2 ] , mat_siberit ) ;
6933: LD_EXP 28
6937: PUSH
6938: LD_VAR 0 2
6942: ARRAY
6943: PUSH
6944: LD_INT 1
6946: ARRAY
6947: PPUSH
6948: LD_EXP 28
6952: PUSH
6953: LD_VAR 0 2
6957: ARRAY
6958: PUSH
6959: LD_INT 2
6961: ARRAY
6962: PPUSH
6963: LD_INT 3
6965: PPUSH
6966: CALL_OW 62
6970: GO 6870
6972: POP
6973: POP
// end ;
6974: LD_VAR 0 1
6978: RET
// function set_shared_visions_and_alliances ; var i , j ; begin
6979: LD_INT 0
6981: PPUSH
6982: PPUSH
6983: PPUSH
// if not Team_Game then
6984: LD_EXP 21
6988: NOT
6989: IFFALSE 7087
// begin for i = 1 to 8 do
6991: LD_ADDR_VAR 0 2
6995: PUSH
6996: DOUBLE
6997: LD_INT 1
6999: DEC
7000: ST_TO_ADDR
7001: LD_INT 8
7003: PUSH
7004: FOR_TO
7005: IFFALSE 7083
// for j = 1 to 8 do
7007: LD_ADDR_VAR 0 3
7011: PUSH
7012: DOUBLE
7013: LD_INT 1
7015: DEC
7016: ST_TO_ADDR
7017: LD_INT 8
7019: PUSH
7020: FOR_TO
7021: IFFALSE 7079
// if i <> j then
7023: LD_VAR 0 2
7027: PUSH
7028: LD_VAR 0 3
7032: NONEQUAL
7033: IFFALSE 7057
// SetAttitude ( i , j , att_neutral , true ) else
7035: LD_VAR 0 2
7039: PPUSH
7040: LD_VAR 0 3
7044: PPUSH
7045: LD_INT 0
7047: PPUSH
7048: LD_INT 1
7050: PPUSH
7051: CALL_OW 80
7055: GO 7077
// SetAttitude ( i , j , att_friend , true ) ;
7057: LD_VAR 0 2
7061: PPUSH
7062: LD_VAR 0 3
7066: PPUSH
7067: LD_INT 1
7069: PPUSH
7070: LD_INT 1
7072: PPUSH
7073: CALL_OW 80
7077: GO 7020
7079: POP
7080: POP
7081: GO 7004
7083: POP
7084: POP
// end else
7085: GO 7262
// begin if def_shared_vision then
7087: LD_EXP 40
7091: IFFALSE 7156
// begin for i in Teams do
7093: LD_ADDR_VAR 0 2
7097: PUSH
7098: LD_EXP 18
7102: PUSH
7103: FOR_IN
7104: IFFALSE 7154
// for j = 2 to i do
7106: LD_ADDR_VAR 0 3
7110: PUSH
7111: DOUBLE
7112: LD_INT 2
7114: DEC
7115: ST_TO_ADDR
7116: LD_VAR 0 2
7120: PUSH
7121: FOR_TO
7122: IFFALSE 7150
// ChangeSideFog ( i [ j ] , i [ 1 ] ) ;
7124: LD_VAR 0 2
7128: PUSH
7129: LD_VAR 0 3
7133: ARRAY
7134: PPUSH
7135: LD_VAR 0 2
7139: PUSH
7140: LD_INT 1
7142: ARRAY
7143: PPUSH
7144: CALL_OW 343
7148: GO 7121
7150: POP
7151: POP
7152: GO 7103
7154: POP
7155: POP
// end ; for i = 1 to 8 do
7156: LD_ADDR_VAR 0 2
7160: PUSH
7161: DOUBLE
7162: LD_INT 1
7164: DEC
7165: ST_TO_ADDR
7166: LD_INT 8
7168: PUSH
7169: FOR_TO
7170: IFFALSE 7260
// for j = 1 to 8 do
7172: LD_ADDR_VAR 0 3
7176: PUSH
7177: DOUBLE
7178: LD_INT 1
7180: DEC
7181: ST_TO_ADDR
7182: LD_INT 8
7184: PUSH
7185: FOR_TO
7186: IFFALSE 7256
// if Side_Teams [ i ] = Side_Teams [ j ] then
7188: LD_EXP 17
7192: PUSH
7193: LD_VAR 0 2
7197: ARRAY
7198: PUSH
7199: LD_EXP 17
7203: PUSH
7204: LD_VAR 0 3
7208: ARRAY
7209: EQUAL
7210: IFFALSE 7234
// SetAttitude ( i , j , att_friend , true ) else
7212: LD_VAR 0 2
7216: PPUSH
7217: LD_VAR 0 3
7221: PPUSH
7222: LD_INT 1
7224: PPUSH
7225: LD_INT 1
7227: PPUSH
7228: CALL_OW 80
7232: GO 7254
// SetAttitude ( i , j , att_enemy , true ) ;
7234: LD_VAR 0 2
7238: PPUSH
7239: LD_VAR 0 3
7243: PPUSH
7244: LD_INT 2
7246: PPUSH
7247: LD_INT 1
7249: PPUSH
7250: CALL_OW 80
7254: GO 7185
7256: POP
7257: POP
7258: GO 7169
7260: POP
7261: POP
// end ; end ;
7262: LD_VAR 0 1
7266: RET
// function prepare_people ( count , cl , x , y , r ) ; var i , j , un , sex ; begin
7267: LD_INT 0
7269: PPUSH
7270: PPUSH
7271: PPUSH
7272: PPUSH
7273: PPUSH
// result := [ ] ;
7274: LD_ADDR_VAR 0 6
7278: PUSH
7279: EMPTY
7280: ST_TO_ADDR
// for i := 1 to count do
7281: LD_ADDR_VAR 0 7
7285: PUSH
7286: DOUBLE
7287: LD_INT 1
7289: DEC
7290: ST_TO_ADDR
7291: LD_VAR 0 1
7295: PUSH
7296: FOR_TO
7297: IFFALSE 7693
// begin uc_direction := Rand ( 0 , 5 ) ;
7299: LD_ADDR_OWVAR 24
7303: PUSH
7304: LD_INT 0
7306: PPUSH
7307: LD_INT 5
7309: PPUSH
7310: CALL_OW 12
7314: ST_TO_ADDR
// if commander then
7315: LD_LOC 1
7319: IFFALSE 7428
// begin hc_name := mp_sides_players_names [ uc_side ] ;
7321: LD_ADDR_OWVAR 26
7325: PUSH
7326: LD_OWVAR 19
7330: PUSH
7331: LD_OWVAR 20
7335: ARRAY
7336: ST_TO_ADDR
// PrepareHuman ( Rand ( 1 , 2 ) , cl , skill_level + 2 ) ;
7337: LD_INT 1
7339: PPUSH
7340: LD_INT 2
7342: PPUSH
7343: CALL_OW 12
7347: PPUSH
7348: LD_VAR 0 2
7352: PPUSH
7353: LD_EXP 6
7357: PUSH
7358: LD_INT 2
7360: PLUS
7361: PPUSH
7362: CALL_OW 380
// hc_importance := 105 ;
7366: LD_ADDR_OWVAR 32
7370: PUSH
7371: LD_INT 105
7373: ST_TO_ADDR
// commander := false ;
7374: LD_ADDR_LOC 1
7378: PUSH
7379: LD_INT 0
7381: ST_TO_ADDR
// if Multiplayer then
7382: LD_OWVAR 4
7386: IFFALSE 7426
// begin hc_gallery := MULTIAVATARS ;
7388: LD_ADDR_OWVAR 33
7392: PUSH
7393: LD_STRING MULTIAVATARS
7395: ST_TO_ADDR
// hc_face_number := Multiplayer_GetPlayerSideNum ( uc_side ) ;
7396: LD_ADDR_OWVAR 34
7400: PUSH
7401: LD_OWVAR 20
7405: PPUSH
7406: CALL_OW 525
7410: ST_TO_ADDR
// hc_sex := Multiplayer_GetPlayerSex ( uc_side ) ;
7411: LD_ADDR_OWVAR 27
7415: PUSH
7416: LD_OWVAR 20
7420: PPUSH
7421: CALL_OW 526
7425: ST_TO_ADDR
// end ; end else
7426: GO 7491
// begin hc_name :=  ;
7428: LD_ADDR_OWVAR 26
7432: PUSH
7433: LD_STRING 
7435: ST_TO_ADDR
// PrepareHuman ( rand ( 1 , 2 ) , cl , skill_level ) ;
7436: LD_INT 1
7438: PPUSH
7439: LD_INT 2
7441: PPUSH
7442: CALL_OW 12
7446: PPUSH
7447: LD_VAR 0 2
7451: PPUSH
7452: LD_EXP 6
7456: PPUSH
7457: CALL_OW 380
// hc_importance := 0 ;
7461: LD_ADDR_OWVAR 32
7465: PUSH
7466: LD_INT 0
7468: ST_TO_ADDR
// if Multiplayer then
7469: LD_OWVAR 4
7473: IFFALSE 7491
// begin hc_gallery :=  ;
7475: LD_ADDR_OWVAR 33
7479: PUSH
7480: LD_STRING 
7482: ST_TO_ADDR
// hc_face_number := 0 ;
7483: LD_ADDR_OWVAR 34
7487: PUSH
7488: LD_INT 0
7490: ST_TO_ADDR
// end ; end ; un := CreateHuman ;
7491: LD_ADDR_VAR 0 9
7495: PUSH
7496: CALL_OW 44
7500: ST_TO_ADDR
// if global_defined then
7501: LD_LOC 3
7505: IFFALSE 7645
// begin if ( cl = class_soldier ) then
7507: LD_VAR 0 2
7511: PUSH
7512: LD_INT 1
7514: EQUAL
7515: IFFALSE 7535
// j := i + soldiers_created else
7517: LD_ADDR_VAR 0 8
7521: PUSH
7522: LD_VAR 0 7
7526: PUSH
7527: LD_LOC 4
7531: PLUS
7532: ST_TO_ADDR
7533: GO 7545
// j := i ;
7535: LD_ADDR_VAR 0 8
7539: PUSH
7540: LD_VAR 0 7
7544: ST_TO_ADDR
// CopySkills ( global_units [ cl ] [ j ] , un ) ;
7545: LD_LOC 2
7549: PUSH
7550: LD_VAR 0 2
7554: ARRAY
7555: PUSH
7556: LD_VAR 0 8
7560: ARRAY
7561: PPUSH
7562: LD_VAR 0 9
7566: PPUSH
7567: CALL_OW 510
// SetAttr ( un , attr_speed , GetAttr ( global_units [ cl ] [ j ] , attr_speed ) ) ;
7571: LD_VAR 0 9
7575: PPUSH
7576: LD_INT 2
7578: PPUSH
7579: LD_LOC 2
7583: PUSH
7584: LD_VAR 0 2
7588: ARRAY
7589: PUSH
7590: LD_VAR 0 8
7594: ARRAY
7595: PPUSH
7596: LD_INT 2
7598: PPUSH
7599: CALL_OW 260
7603: PPUSH
7604: CALL_OW 239
// SetAttr ( un , attr_stamina , GetAttr ( global_units [ cl ] [ j ] , attr_stamina ) ) ;
7608: LD_VAR 0 9
7612: PPUSH
7613: LD_INT 1
7615: PPUSH
7616: LD_LOC 2
7620: PUSH
7621: LD_VAR 0 2
7625: ARRAY
7626: PUSH
7627: LD_VAR 0 8
7631: ARRAY
7632: PPUSH
7633: LD_INT 1
7635: PPUSH
7636: CALL_OW 260
7640: PPUSH
7641: CALL_OW 239
// end ; PlaceUnitXYR ( un , x , y , r , false ) ;
7645: LD_VAR 0 9
7649: PPUSH
7650: LD_VAR 0 3
7654: PPUSH
7655: LD_VAR 0 4
7659: PPUSH
7660: LD_VAR 0 5
7664: PPUSH
7665: LD_INT 0
7667: PPUSH
7668: CALL_OW 50
// result := result ^ [ un ] ;
7672: LD_ADDR_VAR 0 6
7676: PUSH
7677: LD_VAR 0 6
7681: PUSH
7682: LD_VAR 0 9
7686: PUSH
7687: EMPTY
7688: LIST
7689: ADD
7690: ST_TO_ADDR
// end ;
7691: GO 7296
7693: POP
7694: POP
// if not global_defined then
7695: LD_LOC 3
7699: NOT
7700: IFFALSE 7778
// if ( global_units >= cl ) then
7702: LD_LOC 2
7706: PUSH
7707: LD_VAR 0 2
7711: GREATEREQUAL
7712: IFFALSE 7753
// global_units := Replace ( global_units , cl , global_units [ cl ] ^ result ) else
7714: LD_ADDR_LOC 2
7718: PUSH
7719: LD_LOC 2
7723: PPUSH
7724: LD_VAR 0 2
7728: PPUSH
7729: LD_LOC 2
7733: PUSH
7734: LD_VAR 0 2
7738: ARRAY
7739: PUSH
7740: LD_VAR 0 6
7744: ADD
7745: PPUSH
7746: CALL_OW 1
7750: ST_TO_ADDR
7751: GO 7778
// global_units := Replace ( global_units , cl , result ) ;
7753: LD_ADDR_LOC 2
7757: PUSH
7758: LD_LOC 2
7762: PPUSH
7763: LD_VAR 0 2
7767: PPUSH
7768: LD_VAR 0 6
7772: PPUSH
7773: CALL_OW 1
7777: ST_TO_ADDR
// end ;
7778: LD_VAR 0 6
7782: RET
// function prepare_side ( side ) ; var pos , x , y , dir , i , r , br , dep , sol ; begin
7783: LD_INT 0
7785: PPUSH
7786: PPUSH
7787: PPUSH
7788: PPUSH
7789: PPUSH
7790: PPUSH
7791: PPUSH
7792: PPUSH
7793: PPUSH
7794: PPUSH
// pos := Side_Positions [ side ] ;
7795: LD_ADDR_VAR 0 3
7799: PUSH
7800: LD_EXP 19
7804: PUSH
7805: LD_VAR 0 1
7809: ARRAY
7810: ST_TO_ADDR
// uc_nation := Side_Nations [ side ] ;
7811: LD_ADDR_OWVAR 21
7815: PUSH
7816: LD_EXP 20
7820: PUSH
7821: LD_VAR 0 1
7825: ARRAY
7826: ST_TO_ADDR
// uc_side := side ;
7827: LD_ADDR_OWVAR 20
7831: PUSH
7832: LD_VAR 0 1
7836: ST_TO_ADDR
// x := depot_def [ pos ] [ 1 ] ;
7837: LD_ADDR_VAR 0 4
7841: PUSH
7842: LD_EXP 23
7846: PUSH
7847: LD_VAR 0 3
7851: ARRAY
7852: PUSH
7853: LD_INT 1
7855: ARRAY
7856: ST_TO_ADDR
// y := depot_def [ pos ] [ 2 ] ;
7857: LD_ADDR_VAR 0 5
7861: PUSH
7862: LD_EXP 23
7866: PUSH
7867: LD_VAR 0 3
7871: ARRAY
7872: PUSH
7873: LD_INT 2
7875: ARRAY
7876: ST_TO_ADDR
// dir := depot_def [ pos ] [ 3 ] ;
7877: LD_ADDR_VAR 0 6
7881: PUSH
7882: LD_EXP 23
7886: PUSH
7887: LD_VAR 0 3
7891: ARRAY
7892: PUSH
7893: LD_INT 3
7895: ARRAY
7896: ST_TO_ADDR
// if is_depot then
7897: LD_EXP 3
7901: IFFALSE 8034
// begin bc_type = b_depot ;
7903: LD_ADDR_OWVAR 42
7907: PUSH
7908: LD_INT 0
7910: ST_TO_ADDR
// dep := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
7911: LD_ADDR_VAR 0 10
7915: PUSH
7916: LD_VAR 0 4
7920: PPUSH
7921: LD_VAR 0 5
7925: PPUSH
7926: LD_VAR 0 6
7930: PPUSH
7931: CALL_OW 47
7935: ST_TO_ADDR
// SetBName ( dep , @ & side ) ;
7936: LD_VAR 0 10
7940: PPUSH
7941: LD_STRING @
7943: PUSH
7944: LD_VAR 0 1
7948: STR
7949: PPUSH
7950: CALL_OW 500
// SetResourceType ( GetBase ( dep ) , mat_cans , starting_resources [ mat_cans ] ) ;
7954: LD_VAR 0 10
7958: PPUSH
7959: CALL_OW 274
7963: PPUSH
7964: LD_INT 1
7966: PPUSH
7967: LD_EXP 8
7971: PUSH
7972: LD_INT 1
7974: ARRAY
7975: PPUSH
7976: CALL_OW 277
// SetResourceType ( GetBase ( dep ) , mat_oil , starting_resources [ mat_oil ] ) ;
7980: LD_VAR 0 10
7984: PPUSH
7985: CALL_OW 274
7989: PPUSH
7990: LD_INT 2
7992: PPUSH
7993: LD_EXP 8
7997: PUSH
7998: LD_INT 2
8000: ARRAY
8001: PPUSH
8002: CALL_OW 277
// SetResourceType ( GetBase ( dep ) , mat_siberit , starting_resources [ mat_siberit ] ) ;
8006: LD_VAR 0 10
8010: PPUSH
8011: CALL_OW 274
8015: PPUSH
8016: LD_INT 3
8018: PPUSH
8019: LD_EXP 8
8023: PUSH
8024: LD_INT 3
8026: ARRAY
8027: PPUSH
8028: CALL_OW 277
// end else
8032: GO 8178
// begin for i := 1 to 3 do
8034: LD_ADDR_VAR 0 7
8038: PUSH
8039: DOUBLE
8040: LD_INT 1
8042: DEC
8043: ST_TO_ADDR
8044: LD_INT 3
8046: PUSH
8047: FOR_TO
8048: IFFALSE 8176
// begin r := starting_resources [ i ] ;
8050: LD_ADDR_VAR 0 8
8054: PUSH
8055: LD_EXP 8
8059: PUSH
8060: LD_VAR 0 7
8064: ARRAY
8065: ST_TO_ADDR
// while r >= 10 do
8066: LD_VAR 0 8
8070: PUSH
8071: LD_INT 10
8073: GREATEREQUAL
8074: IFFALSE 8174
// if r > 50 then
8076: LD_VAR 0 8
8080: PUSH
8081: LD_INT 50
8083: GREATER
8084: IFFALSE 8130
// begin CreateResourcesXYR ( i , 5 , x , y , 4 , false ) ;
8086: LD_VAR 0 7
8090: PPUSH
8091: LD_INT 5
8093: PPUSH
8094: LD_VAR 0 4
8098: PPUSH
8099: LD_VAR 0 5
8103: PPUSH
8104: LD_INT 4
8106: PPUSH
8107: LD_INT 0
8109: PPUSH
8110: CALL_OW 60
// r := r - 50 ;
8114: LD_ADDR_VAR 0 8
8118: PUSH
8119: LD_VAR 0 8
8123: PUSH
8124: LD_INT 50
8126: MINUS
8127: ST_TO_ADDR
// end else
8128: GO 8172
// begin CreateResourcesXYR ( i , r div 10 , x , y , 4 , false ) ;
8130: LD_VAR 0 7
8134: PPUSH
8135: LD_VAR 0 8
8139: PUSH
8140: LD_INT 10
8142: DIV
8143: PPUSH
8144: LD_VAR 0 4
8148: PPUSH
8149: LD_VAR 0 5
8153: PPUSH
8154: LD_INT 4
8156: PPUSH
8157: LD_INT 0
8159: PPUSH
8160: CALL_OW 60
// r := 0 ;
8164: LD_ADDR_VAR 0 8
8168: PUSH
8169: LD_INT 0
8171: ST_TO_ADDR
// end ;
8172: GO 8066
// end ;
8174: GO 8047
8176: POP
8177: POP
// end ; for r in starting_crates do
8178: LD_ADDR_VAR 0 8
8182: PUSH
8183: LD_EXP 7
8187: PUSH
8188: FOR_IN
8189: IFFALSE 8221
// CreateResourcesXYR ( mat_cans , 5 , x , y , r , false ) ;
8191: LD_INT 1
8193: PPUSH
8194: LD_INT 5
8196: PPUSH
8197: LD_VAR 0 4
8201: PPUSH
8202: LD_VAR 0 5
8206: PPUSH
8207: LD_VAR 0 8
8211: PPUSH
8212: LD_INT 0
8214: PPUSH
8215: CALL_OW 60
8219: GO 8188
8221: POP
8222: POP
// if def_morale_flags then
8223: LD_EXP 41
8227: IFFALSE 8366
// begin x := start_def [ pos ] [ 1 ] ;
8229: LD_ADDR_VAR 0 4
8233: PUSH
8234: LD_EXP 25
8238: PUSH
8239: LD_VAR 0 3
8243: ARRAY
8244: PUSH
8245: LD_INT 1
8247: ARRAY
8248: ST_TO_ADDR
// y := start_def [ pos ] [ 2 ] ;
8249: LD_ADDR_VAR 0 5
8253: PUSH
8254: LD_EXP 25
8258: PUSH
8259: LD_VAR 0 3
8263: ARRAY
8264: PUSH
8265: LD_INT 2
8267: ARRAY
8268: ST_TO_ADDR
// PlaceEnvironment ( x , y , 12 , 2 ) ;
8269: LD_VAR 0 4
8273: PPUSH
8274: LD_VAR 0 5
8278: PPUSH
8279: LD_INT 12
8281: PPUSH
8282: LD_INT 2
8284: PPUSH
8285: CALL_OW 349
// battle_flags_id := battle_flags_id ^ SetBattleFlag ( side , x , y , [ [ bfo_defend_bonus_human , 100 ] , [ bfo_defend_bonus_vehicle , 50 ] , [ bfo_defend_bonus_building , 20 ] , [ bfo_height , 100 ] ] ) ;
8289: LD_ADDR_EXP 30
8293: PUSH
8294: LD_EXP 30
8298: PUSH
8299: LD_VAR 0 1
8303: PPUSH
8304: LD_VAR 0 4
8308: PPUSH
8309: LD_VAR 0 5
8313: PPUSH
8314: LD_INT 1
8316: PUSH
8317: LD_INT 100
8319: PUSH
8320: EMPTY
8321: LIST
8322: LIST
8323: PUSH
8324: LD_INT 2
8326: PUSH
8327: LD_INT 50
8329: PUSH
8330: EMPTY
8331: LIST
8332: LIST
8333: PUSH
8334: LD_INT 3
8336: PUSH
8337: LD_INT 20
8339: PUSH
8340: EMPTY
8341: LIST
8342: LIST
8343: PUSH
8344: LD_INT 20
8346: PUSH
8347: LD_INT 100
8349: PUSH
8350: EMPTY
8351: LIST
8352: LIST
8353: PUSH
8354: EMPTY
8355: LIST
8356: LIST
8357: LIST
8358: LIST
8359: PPUSH
8360: CALL_OW 418
8364: ADD
8365: ST_TO_ADDR
// end ; commander := true ;
8366: LD_ADDR_LOC 1
8370: PUSH
8371: LD_INT 1
8373: ST_TO_ADDR
// soldiers_created := 0 ;
8374: LD_ADDR_LOC 4
8378: PUSH
8379: LD_INT 0
8381: ST_TO_ADDR
// for i := 1 to number_of_breastworks do
8382: LD_ADDR_VAR 0 7
8386: PUSH
8387: DOUBLE
8388: LD_INT 1
8390: DEC
8391: ST_TO_ADDR
8392: LD_EXP 4
8396: PUSH
8397: FOR_TO
8398: IFFALSE 8620
// begin x := breastworks_def [ pos ] [ i ] [ 1 ] ;
8400: LD_ADDR_VAR 0 4
8404: PUSH
8405: LD_EXP 24
8409: PUSH
8410: LD_VAR 0 3
8414: ARRAY
8415: PUSH
8416: LD_VAR 0 7
8420: ARRAY
8421: PUSH
8422: LD_INT 1
8424: ARRAY
8425: ST_TO_ADDR
// y := breastworks_def [ pos ] [ i ] [ 2 ] ;
8426: LD_ADDR_VAR 0 5
8430: PUSH
8431: LD_EXP 24
8435: PUSH
8436: LD_VAR 0 3
8440: ARRAY
8441: PUSH
8442: LD_VAR 0 7
8446: ARRAY
8447: PUSH
8448: LD_INT 2
8450: ARRAY
8451: ST_TO_ADDR
// dir := breastworks_def [ pos ] [ i ] [ 3 ] ;
8452: LD_ADDR_VAR 0 6
8456: PUSH
8457: LD_EXP 24
8461: PUSH
8462: LD_VAR 0 3
8466: ARRAY
8467: PUSH
8468: LD_VAR 0 7
8472: ARRAY
8473: PUSH
8474: LD_INT 3
8476: ARRAY
8477: ST_TO_ADDR
// bc_type := b_breastwork ;
8478: LD_ADDR_OWVAR 42
8482: PUSH
8483: LD_INT 31
8485: ST_TO_ADDR
// br := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
8486: LD_ADDR_VAR 0 9
8490: PUSH
8491: LD_VAR 0 4
8495: PPUSH
8496: LD_VAR 0 5
8500: PPUSH
8501: LD_VAR 0 6
8505: PPUSH
8506: CALL_OW 47
8510: ST_TO_ADDR
// x := ShiftX ( x , dir , 2 ) ;
8511: LD_ADDR_VAR 0 4
8515: PUSH
8516: LD_VAR 0 4
8520: PPUSH
8521: LD_VAR 0 6
8525: PPUSH
8526: LD_INT 2
8528: PPUSH
8529: CALL_OW 272
8533: ST_TO_ADDR
// y := ShiftY ( y , dir , 2 ) ;
8534: LD_ADDR_VAR 0 5
8538: PUSH
8539: LD_VAR 0 5
8543: PPUSH
8544: LD_VAR 0 6
8548: PPUSH
8549: LD_INT 2
8551: PPUSH
8552: CALL_OW 273
8556: ST_TO_ADDR
// sol := prepare_people ( 1 , class_soldier , x , y , 0 ) [ 1 ] ;
8557: LD_ADDR_VAR 0 11
8561: PUSH
8562: LD_INT 1
8564: PPUSH
8565: LD_INT 1
8567: PPUSH
8568: LD_VAR 0 4
8572: PPUSH
8573: LD_VAR 0 5
8577: PPUSH
8578: LD_INT 0
8580: PPUSH
8581: CALL 7267 0 5
8585: PUSH
8586: LD_INT 1
8588: ARRAY
8589: ST_TO_ADDR
// soldiers_created := soldiers_created + 1 ;
8590: LD_ADDR_LOC 4
8594: PUSH
8595: LD_LOC 4
8599: PUSH
8600: LD_INT 1
8602: PLUS
8603: ST_TO_ADDR
// ComEnterUnit ( sol , br ) ;
8604: LD_VAR 0 11
8608: PPUSH
8609: LD_VAR 0 9
8613: PPUSH
8614: CALL_OW 120
// end ;
8618: GO 8397
8620: POP
8621: POP
// x := start_def [ pos ] [ 1 ] ;
8622: LD_ADDR_VAR 0 4
8626: PUSH
8627: LD_EXP 25
8631: PUSH
8632: LD_VAR 0 3
8636: ARRAY
8637: PUSH
8638: LD_INT 1
8640: ARRAY
8641: ST_TO_ADDR
// y := start_def [ pos ] [ 2 ] ;
8642: LD_ADDR_VAR 0 5
8646: PUSH
8647: LD_EXP 25
8651: PUSH
8652: LD_VAR 0 3
8656: ARRAY
8657: PUSH
8658: LD_INT 2
8660: ARRAY
8661: ST_TO_ADDR
// prepare_people ( nsol - number_of_breastworks , class_soldier , x , y , 5 ) ;
8662: LD_LOC 8
8666: PUSH
8667: LD_EXP 4
8671: MINUS
8672: PPUSH
8673: LD_INT 1
8675: PPUSH
8676: LD_VAR 0 4
8680: PPUSH
8681: LD_VAR 0 5
8685: PPUSH
8686: LD_INT 5
8688: PPUSH
8689: CALL 7267 0 5
// prepare_people ( neng , class_engineer , x , y , 5 ) ;
8693: LD_LOC 5
8697: PPUSH
8698: LD_INT 2
8700: PPUSH
8701: LD_VAR 0 4
8705: PPUSH
8706: LD_VAR 0 5
8710: PPUSH
8711: LD_INT 5
8713: PPUSH
8714: CALL 7267 0 5
// prepare_people ( nmech , class_mechanic , x , y , 5 ) ;
8718: LD_LOC 7
8722: PPUSH
8723: LD_INT 3
8725: PPUSH
8726: LD_VAR 0 4
8730: PPUSH
8731: LD_VAR 0 5
8735: PPUSH
8736: LD_INT 5
8738: PPUSH
8739: CALL 7267 0 5
// prepare_people ( nsci , class_scientistic , x , y , 5 ) ;
8743: LD_LOC 6
8747: PPUSH
8748: LD_INT 4
8750: PPUSH
8751: LD_VAR 0 4
8755: PPUSH
8756: LD_VAR 0 5
8760: PPUSH
8761: LD_INT 5
8763: PPUSH
8764: CALL 7267 0 5
// if def_siberite_detection and GetTech ( tech_sibdet , side ) = state_enabled then
8768: LD_EXP 42
8772: PUSH
8773: LD_INT 20
8775: PPUSH
8776: LD_VAR 0 1
8780: PPUSH
8781: CALL_OW 321
8785: PUSH
8786: LD_INT 1
8788: EQUAL
8789: AND
8790: IFFALSE 8807
// SetTech ( tech_SibDet , side , state_researched ) ;
8792: LD_INT 20
8794: PPUSH
8795: LD_VAR 0 1
8799: PPUSH
8800: LD_INT 2
8802: PPUSH
8803: CALL_OW 322
// if def_siberite_bomb = 1 then
8807: LD_EXP 45
8811: PUSH
8812: LD_INT 1
8814: EQUAL
8815: IFFALSE 8834
// SetTech ( tech_SibFiss , side , state_enabled ) else
8817: LD_INT 25
8819: PPUSH
8820: LD_VAR 0 1
8824: PPUSH
8825: LD_INT 1
8827: PPUSH
8828: CALL_OW 322
8832: GO 8849
// SetTech ( tech_SibFiss , side , state_disabled ) ;
8834: LD_INT 25
8836: PPUSH
8837: LD_VAR 0 1
8841: PPUSH
8842: LD_INT 0
8844: PPUSH
8845: CALL_OW 322
// SetTech ( tech_artifact , side , state_disabled ) ;
8849: LD_INT 24
8851: PPUSH
8852: LD_VAR 0 1
8856: PPUSH
8857: LD_INT 0
8859: PPUSH
8860: CALL_OW 322
// global_defined := true ;
8864: LD_ADDR_LOC 3
8868: PUSH
8869: LD_INT 1
8871: ST_TO_ADDR
// end ;
8872: LD_VAR 0 2
8876: RET
// function EnableSibFiss ; var i ; begin
8877: LD_INT 0
8879: PPUSH
8880: PPUSH
// for i := 1 to 8 do
8881: LD_ADDR_VAR 0 2
8885: PUSH
8886: DOUBLE
8887: LD_INT 1
8889: DEC
8890: ST_TO_ADDR
8891: LD_INT 8
8893: PUSH
8894: FOR_TO
8895: IFFALSE 8926
// if Side_Positions [ i ] then
8897: LD_EXP 19
8901: PUSH
8902: LD_VAR 0 2
8906: ARRAY
8907: IFFALSE 8924
// SetTech ( tech_SibFiss , i , state_enabled ) ;
8909: LD_INT 25
8911: PPUSH
8912: LD_VAR 0 2
8916: PPUSH
8917: LD_INT 1
8919: PPUSH
8920: CALL_OW 322
8924: GO 8894
8926: POP
8927: POP
// end ;
8928: LD_VAR 0 1
8932: RET
// every 30 30$0 do
8933: GO 8935
8935: DISABLE
// if ( def_siberite_bomb = 2 ) then
8936: LD_EXP 45
8940: PUSH
8941: LD_INT 2
8943: EQUAL
8944: IFFALSE 8950
// EnableSibFiss ;
8946: CALL 8877 0 0
8950: END
// every 60 60$0 do
8951: GO 8953
8953: DISABLE
// if ( def_siberite_bomb = 3 ) then
8954: LD_EXP 45
8958: PUSH
8959: LD_INT 3
8961: EQUAL
8962: IFFALSE 8968
// EnableSibFiss ;
8964: CALL 8877 0 0
8968: END
// every 90 90$0 do
8969: GO 8971
8971: DISABLE
// if ( def_siberite_bomb = 4 ) then
8972: LD_EXP 45
8976: PUSH
8977: LD_INT 4
8979: EQUAL
8980: IFFALSE 8986
// EnableSibFiss ;
8982: CALL 8877 0 0
8986: END
// every 120 120$0 do
8987: GO 8989
8989: DISABLE
// if ( def_siberite_bomb = 5 ) then
8990: LD_EXP 45
8994: PUSH
8995: LD_INT 5
8997: EQUAL
8998: IFFALSE 9004
// EnableSibFiss ;
9000: CALL 8877 0 0
9004: END
// function prepare_sides ; var i ; begin
9005: LD_INT 0
9007: PPUSH
9008: PPUSH
// global_units := [ ] ;
9009: LD_ADDR_LOC 2
9013: PUSH
9014: EMPTY
9015: ST_TO_ADDR
// global_defined := false ;
9016: LD_ADDR_LOC 3
9020: PUSH
9021: LD_INT 0
9023: ST_TO_ADDR
// CountClassMembers ;
9024: CALL 9074 0 0
// for i := 1 to 8 do
9028: LD_ADDR_VAR 0 2
9032: PUSH
9033: DOUBLE
9034: LD_INT 1
9036: DEC
9037: ST_TO_ADDR
9038: LD_INT 8
9040: PUSH
9041: FOR_TO
9042: IFFALSE 9067
// if Side_Positions [ i ] then
9044: LD_EXP 19
9048: PUSH
9049: LD_VAR 0 2
9053: ARRAY
9054: IFFALSE 9065
// prepare_side ( i ) ;
9056: LD_VAR 0 2
9060: PPUSH
9061: CALL 7783 0 1
9065: GO 9041
9067: POP
9068: POP
// end ;
9069: LD_VAR 0 1
9073: RET
// function CountClassMembers ; var Mode ; begin
9074: LD_INT 0
9076: PPUSH
9077: PPUSH
// if No_Mechs then
9078: LD_EXP 49
9082: IFFALSE 9094
// Mode := 2 else
9084: LD_ADDR_VAR 0 2
9088: PUSH
9089: LD_INT 2
9091: ST_TO_ADDR
9092: GO 9102
// Mode := 1 ;
9094: LD_ADDR_VAR 0 2
9098: PUSH
9099: LD_INT 1
9101: ST_TO_ADDR
// neng := number_of_people ;
9102: LD_ADDR_LOC 5
9106: PUSH
9107: LD_EXP 5
9111: ST_TO_ADDR
// nsol := neng div [ 4 , 3 ] [ Mode ] ;
9112: LD_ADDR_LOC 8
9116: PUSH
9117: LD_LOC 5
9121: PUSH
9122: LD_INT 4
9124: PUSH
9125: LD_INT 3
9127: PUSH
9128: EMPTY
9129: LIST
9130: LIST
9131: PUSH
9132: LD_VAR 0 2
9136: ARRAY
9137: DIV
9138: ST_TO_ADDR
// if ( nsol < number_of_breastworks ) then
9139: LD_LOC 8
9143: PUSH
9144: LD_EXP 4
9148: LESS
9149: IFFALSE 9161
// nsol := number_of_breastworks ;
9151: LD_ADDR_LOC 8
9155: PUSH
9156: LD_EXP 4
9160: ST_TO_ADDR
// neng := neng - nsol ;
9161: LD_ADDR_LOC 5
9165: PUSH
9166: LD_LOC 5
9170: PUSH
9171: LD_LOC 8
9175: MINUS
9176: ST_TO_ADDR
// nsci := neng div [ 3 , 2 ] [ Mode ] ;
9177: LD_ADDR_LOC 6
9181: PUSH
9182: LD_LOC 5
9186: PUSH
9187: LD_INT 3
9189: PUSH
9190: LD_INT 2
9192: PUSH
9193: EMPTY
9194: LIST
9195: LIST
9196: PUSH
9197: LD_VAR 0 2
9201: ARRAY
9202: DIV
9203: ST_TO_ADDR
// if ( nsci < 1 ) then
9204: LD_LOC 6
9208: PUSH
9209: LD_INT 1
9211: LESS
9212: IFFALSE 9222
// nsci := 1 ;
9214: LD_ADDR_LOC 6
9218: PUSH
9219: LD_INT 1
9221: ST_TO_ADDR
// neng := neng - nsci ;
9222: LD_ADDR_LOC 5
9226: PUSH
9227: LD_LOC 5
9231: PUSH
9232: LD_LOC 6
9236: MINUS
9237: ST_TO_ADDR
// nmech := [ neng div 2 , 0 ] [ Mode ] ;
9238: LD_ADDR_LOC 7
9242: PUSH
9243: LD_LOC 5
9247: PUSH
9248: LD_INT 2
9250: DIV
9251: PUSH
9252: LD_INT 0
9254: PUSH
9255: EMPTY
9256: LIST
9257: LIST
9258: PUSH
9259: LD_VAR 0 2
9263: ARRAY
9264: ST_TO_ADDR
// neng := neng - nmech ;
9265: LD_ADDR_LOC 5
9269: PUSH
9270: LD_LOC 5
9274: PUSH
9275: LD_LOC 7
9279: MINUS
9280: ST_TO_ADDR
// if ( neng < 1 ) then
9281: LD_LOC 5
9285: PUSH
9286: LD_INT 1
9288: LESS
9289: IFFALSE 9299
// neng := 1 ;
9291: LD_ADDR_LOC 5
9295: PUSH
9296: LD_INT 1
9298: ST_TO_ADDR
// end ;
9299: LD_VAR 0 1
9303: RET
// function Init_Win_Condition ; begin
9304: LD_INT 0
9306: PPUSH
// if Team_Game then
9307: LD_EXP 21
9311: IFFALSE 9318
// enable ( 98 ) else
9313: LD_INT 98
9315: ENABLE_MARKED
9316: GO 9321
// enable ( 99 ) ;
9318: LD_INT 99
9320: ENABLE_MARKED
// case Game_Type of 3 :
9321: LD_EXP 31
9325: PUSH
9326: LD_INT 3
9328: DOUBLE
9329: EQUAL
9330: IFTRUE 9334
9332: GO 9340
9334: POP
// enable ( 100 ) ; end ;
9335: LD_INT 100
9337: ENABLE_MARKED
9338: GO 9341
9340: POP
// end ;
9341: LD_VAR 0 1
9345: RET
// starting begin disable ( 98 ) ;
9346: LD_INT 98
9348: DISABLE_MARKED
// disable ( 99 ) ;
9349: LD_INT 99
9351: DISABLE_MARKED
// disable ( 100 ) ;
9352: LD_INT 100
9354: DISABLE_MARKED
// disable ( 200 ) ;
9355: LD_INT 200
9357: DISABLE_MARKED
// disable ( 400 ) ;
9358: LD_INT 400
9360: DISABLE_MARKED
// disable ( 401 ) ;
9361: LD_INT 401
9363: DISABLE_MARKED
// disable ( 600 ) ;
9364: LD_INT 600
9366: DISABLE_MARKED
// mp_selectmsg := true ;
9367: LD_ADDR_OWVAR 13
9371: PUSH
9372: LD_INT 1
9374: ST_TO_ADDR
// read_multiplayer_and_game_parameters ;
9375: CALL 0 0 0
// init_map ;
9379: CALL 5636 0 0
// init_respawning ;
9383: CALL 9525 0 0
// set_shared_visions_and_alliances ;
9387: CALL 6979 0 0
// prepare_sides ;
9391: CALL 9005 0 0
// InitLimits ;
9395: CALL 12342 0 0
// ShowTimer ;
9399: CALL 16071 0 0
// music_nat := Side_Nations [ your_side ] ;
9403: LD_ADDR_OWVAR 71
9407: PUSH
9408: LD_EXP 20
9412: PUSH
9413: LD_OWVAR 2
9417: ARRAY
9418: ST_TO_ADDR
// SetWeather ( 2 , 90 , 150 ) ;
9419: LD_INT 2
9421: PPUSH
9422: LD_INT 90
9424: PPUSH
9425: LD_INT 150
9427: PPUSH
9428: CALL_OW 550
// if IAmSpec then
9432: CALL_OW 531
9436: IFFALSE 9460
// begin FogOff ( true ) ;
9438: LD_INT 1
9440: PPUSH
9441: CALL_OW 344
// CenterNowOnXY ( 104 , 69 ) ;
9445: LD_INT 104
9447: PPUSH
9448: LD_INT 69
9450: PPUSH
9451: CALL_OW 86
// enable ( 400 ) ;
9455: LD_INT 400
9457: ENABLE_MARKED
// end else
9458: GO 9514
// begin ResetFog ;
9460: CALL_OW 335
// CenterNowOnXY ( start_def [ Side_Positions [ your_side ] ] [ 1 ] , start_def [ Side_Positions [ your_side ] ] [ 2 ] ) ;
9464: LD_EXP 25
9468: PUSH
9469: LD_EXP 19
9473: PUSH
9474: LD_OWVAR 2
9478: ARRAY
9479: ARRAY
9480: PUSH
9481: LD_INT 1
9483: ARRAY
9484: PPUSH
9485: LD_EXP 25
9489: PUSH
9490: LD_EXP 19
9494: PUSH
9495: LD_OWVAR 2
9499: ARRAY
9500: ARRAY
9501: PUSH
9502: LD_INT 2
9504: ARRAY
9505: PPUSH
9506: CALL_OW 86
// Init_Win_Condition ;
9510: CALL 9304 0 0
// end ; if def_builduptime then
9514: LD_EXP 46
9518: IFFALSE 9524
// BeginBuildUp ;
9520: CALL 15461 0 0
// end ; end_of_file
9524: END
// var respawn , inqueue ; export function init_respawning ; begin
9525: LD_INT 0
9527: PPUSH
// respawn := Rand ( 1 , 8 ) ;
9528: LD_ADDR_LOC 9
9532: PUSH
9533: LD_INT 1
9535: PPUSH
9536: LD_INT 8
9538: PPUSH
9539: CALL_OW 12
9543: ST_TO_ADDR
// inqueue := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
9544: LD_ADDR_LOC 10
9548: PUSH
9549: LD_INT 0
9551: PUSH
9552: LD_INT 0
9554: PUSH
9555: LD_INT 0
9557: PUSH
9558: LD_INT 0
9560: PUSH
9561: LD_INT 0
9563: PUSH
9564: LD_INT 0
9566: PUSH
9567: LD_INT 0
9569: PUSH
9570: LD_INT 0
9572: PUSH
9573: EMPTY
9574: LIST
9575: LIST
9576: LIST
9577: LIST
9578: LIST
9579: LIST
9580: LIST
9581: LIST
9582: ST_TO_ADDR
// end ;
9583: LD_VAR 0 1
9587: RET
// every 0 0$1 + 0 0$0.5 do var n , building_list , aktresp , b ;
9588: GO 9590
9590: DISABLE
9591: LD_INT 0
9593: PPUSH
9594: PPUSH
9595: PPUSH
9596: PPUSH
// begin if respawning_time_max = 0 then
9597: LD_EXP 14
9601: PUSH
9602: LD_INT 0
9604: EQUAL
9605: IFFALSE 9609
// exit ;
9607: GO 10116
// if respawn = 8 then
9609: LD_LOC 9
9613: PUSH
9614: LD_INT 8
9616: EQUAL
9617: IFFALSE 9629
// respawn := 1 else
9619: LD_ADDR_LOC 9
9623: PUSH
9624: LD_INT 1
9626: ST_TO_ADDR
9627: GO 9643
// respawn := respawn + 1 ;
9629: LD_ADDR_LOC 9
9633: PUSH
9634: LD_LOC 9
9638: PUSH
9639: LD_INT 1
9641: PLUS
9642: ST_TO_ADDR
// if Side_Positions [ respawn ] and not inqueue [ respawn ] then
9643: LD_EXP 19
9647: PUSH
9648: LD_LOC 9
9652: ARRAY
9653: PUSH
9654: LD_LOC 10
9658: PUSH
9659: LD_LOC 9
9663: ARRAY
9664: NOT
9665: AND
9666: IFFALSE 10115
// begin n := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , respawn ] , f_not , [ f_nation , nation_nature ] ] ) ;
9668: LD_ADDR_VAR 0 1
9672: PUSH
9673: LD_INT 21
9675: PUSH
9676: LD_INT 1
9678: PUSH
9679: EMPTY
9680: LIST
9681: LIST
9682: PUSH
9683: LD_INT 22
9685: PUSH
9686: LD_LOC 9
9690: PUSH
9691: EMPTY
9692: LIST
9693: LIST
9694: PUSH
9695: LD_INT 3
9697: PUSH
9698: LD_INT 23
9700: PUSH
9701: LD_INT 0
9703: PUSH
9704: EMPTY
9705: LIST
9706: LIST
9707: PUSH
9708: EMPTY
9709: LIST
9710: LIST
9711: LIST
9712: LIST
9713: PPUSH
9714: CALL_OW 69
9718: ST_TO_ADDR
// if n < number_of_people then
9719: LD_VAR 0 1
9723: PUSH
9724: LD_EXP 5
9728: LESS
9729: IFFALSE 10112
// begin aktresp := respawn ;
9731: LD_ADDR_VAR 0 3
9735: PUSH
9736: LD_LOC 9
9740: ST_TO_ADDR
// inqueue := Replace ( inqueue , aktresp , true ) ;
9741: LD_ADDR_LOC 10
9745: PUSH
9746: LD_LOC 10
9750: PPUSH
9751: LD_VAR 0 3
9755: PPUSH
9756: LD_INT 1
9758: PPUSH
9759: CALL_OW 1
9763: ST_TO_ADDR
// enable ;
9764: ENABLE
// wait ( rand ( respawning_time_min , respawning_time_max ) ) ;
9765: LD_EXP 13
9769: PPUSH
9770: LD_EXP 14
9774: PPUSH
9775: CALL_OW 12
9779: PPUSH
9780: CALL_OW 67
// inqueue := Replace ( inqueue , aktresp , false ) ;
9784: LD_ADDR_LOC 10
9788: PUSH
9789: LD_LOC 10
9793: PPUSH
9794: LD_VAR 0 3
9798: PPUSH
9799: LD_INT 0
9801: PPUSH
9802: CALL_OW 1
9806: ST_TO_ADDR
// building_list = FilterAllUnits ( [ [ f_type , unit_building ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_ok ] , [ f_side , aktresp ] ] ) ;
9807: LD_ADDR_VAR 0 2
9811: PUSH
9812: LD_INT 21
9814: PUSH
9815: LD_INT 3
9817: PUSH
9818: EMPTY
9819: LIST
9820: LIST
9821: PUSH
9822: LD_INT 2
9824: PUSH
9825: LD_INT 30
9827: PUSH
9828: LD_INT 0
9830: PUSH
9831: EMPTY
9832: LIST
9833: LIST
9834: PUSH
9835: LD_INT 30
9837: PUSH
9838: LD_INT 1
9840: PUSH
9841: EMPTY
9842: LIST
9843: LIST
9844: PUSH
9845: EMPTY
9846: LIST
9847: LIST
9848: LIST
9849: PUSH
9850: LD_INT 50
9852: PUSH
9853: EMPTY
9854: LIST
9855: PUSH
9856: LD_INT 22
9858: PUSH
9859: LD_VAR 0 3
9863: PUSH
9864: EMPTY
9865: LIST
9866: LIST
9867: PUSH
9868: EMPTY
9869: LIST
9870: LIST
9871: LIST
9872: LIST
9873: PPUSH
9874: CALL_OW 69
9878: ST_TO_ADDR
// if building_list = 0 then
9879: LD_VAR 0 2
9883: PUSH
9884: LD_INT 0
9886: EQUAL
9887: IFFALSE 9932
// building_list = FilterAllUnits ( [ [ f_type , unit_building ] , [ f_ok ] , [ f_side , aktresp ] ] ) ;
9889: LD_ADDR_VAR 0 2
9893: PUSH
9894: LD_INT 21
9896: PUSH
9897: LD_INT 3
9899: PUSH
9900: EMPTY
9901: LIST
9902: LIST
9903: PUSH
9904: LD_INT 50
9906: PUSH
9907: EMPTY
9908: LIST
9909: PUSH
9910: LD_INT 22
9912: PUSH
9913: LD_VAR 0 3
9917: PUSH
9918: EMPTY
9919: LIST
9920: LIST
9921: PUSH
9922: EMPTY
9923: LIST
9924: LIST
9925: LIST
9926: PPUSH
9927: CALL_OW 69
9931: ST_TO_ADDR
// if building_list = 0 then
9932: LD_VAR 0 2
9936: PUSH
9937: LD_INT 0
9939: EQUAL
9940: IFFALSE 9944
// exit ;
9942: GO 10116
// hc_name :=  ;
9944: LD_ADDR_OWVAR 26
9948: PUSH
9949: LD_STRING 
9951: ST_TO_ADDR
// hc_importance := 0 ;
9952: LD_ADDR_OWVAR 32
9956: PUSH
9957: LD_INT 0
9959: ST_TO_ADDR
// PrepareHuman ( 0 , 0 , skill_level div 2 ) ;
9960: LD_INT 0
9962: PPUSH
9963: LD_INT 0
9965: PPUSH
9966: LD_EXP 6
9970: PUSH
9971: LD_INT 2
9973: DIV
9974: PPUSH
9975: CALL_OW 380
// uc_nation := Side_Nations [ aktresp ] ;
9979: LD_ADDR_OWVAR 21
9983: PUSH
9984: LD_EXP 20
9988: PUSH
9989: LD_VAR 0 3
9993: ARRAY
9994: ST_TO_ADDR
// uc_side := aktresp ;
9995: LD_ADDR_OWVAR 20
9999: PUSH
10000: LD_VAR 0 3
10004: ST_TO_ADDR
// b := building_list [ Rand ( 1 , building_list + 0 ) ] ;
10005: LD_ADDR_VAR 0 4
10009: PUSH
10010: LD_VAR 0 2
10014: PUSH
10015: LD_INT 1
10017: PPUSH
10018: LD_VAR 0 2
10022: PUSH
10023: LD_INT 0
10025: PLUS
10026: PPUSH
10027: CALL_OW 12
10031: ARRAY
10032: ST_TO_ADDR
// if GetBType ( b ) in [ b_depot , b_warehouse ] then
10033: LD_VAR 0 4
10037: PPUSH
10038: CALL_OW 266
10042: PUSH
10043: LD_INT 0
10045: PUSH
10046: LD_INT 1
10048: PUSH
10049: EMPTY
10050: LIST
10051: LIST
10052: IN
10053: IFFALSE 10065
// n = 25 else
10055: LD_ADDR_VAR 0 1
10059: PUSH
10060: LD_INT 25
10062: ST_TO_ADDR
10063: GO 10073
// n = 10 ;
10065: LD_ADDR_VAR 0 1
10069: PUSH
10070: LD_INT 10
10072: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( b ) , GetY ( b ) , n , true ) ;
10073: CALL_OW 44
10077: PPUSH
10078: LD_VAR 0 4
10082: PPUSH
10083: CALL_OW 250
10087: PPUSH
10088: LD_VAR 0 4
10092: PPUSH
10093: CALL_OW 251
10097: PPUSH
10098: LD_VAR 0 1
10102: PPUSH
10103: LD_INT 1
10105: PPUSH
10106: CALL_OW 50
// end else
10110: GO 10113
// enable ;
10112: ENABLE
// end else
10113: GO 10116
// enable ;
10115: ENABLE
// end ; end_of_file
10116: PPOPN 4
10118: END
// export Game_Type , def_game_rules ; export def_base_level , def_amount_of_people , def_skill_level , def_starting_resources , def_shipments_density , def_extra_oil_deposits , def_extra_sib_deposits , def_shared_vision , def_morale_flags , def_siberite_detection , def_people_respawning , def_amount_of_apemen , def_siberite_bomb , def_builduptime , def_arabiansheik , def_observegame ; export No_Mechs ; var Restricted_Builds , Restricted_Builds_Amount ; var Banned_Weapons , Banned_Chassis , Banned_Controls , Banned_Engines ; var Already_Built ; var Limits_Info , Cheaters ; export function LimitsStrings ; var i ; begin
10119: LD_INT 0
10121: PPUSH
10122: PPUSH
// if ( not IAmSpec ) then
10123: CALL_OW 531
10127: NOT
10128: IFFALSE 10144
// Result := Limits_Info ^  ;
10130: LD_ADDR_VAR 0 1
10134: PUSH
10135: LD_LOC 18
10139: PUSH
10140: LD_STRING 
10142: ADD
10143: ST_TO_ADDR
// for i := 1 to 8 do
10144: LD_ADDR_VAR 0 2
10148: PUSH
10149: DOUBLE
10150: LD_INT 1
10152: DEC
10153: ST_TO_ADDR
10154: LD_INT 8
10156: PUSH
10157: FOR_TO
10158: IFFALSE 10203
// if Cheaters [ i ] then
10160: LD_LOC 19
10164: PUSH
10165: LD_VAR 0 2
10169: ARRAY
10170: IFFALSE 10201
// Result := Result ^ [ #Cheater , i , i ] ;
10172: LD_ADDR_VAR 0 1
10176: PUSH
10177: LD_VAR 0 1
10181: PUSH
10182: LD_STRING #Cheater
10184: PUSH
10185: LD_VAR 0 2
10189: PUSH
10190: LD_VAR 0 2
10194: PUSH
10195: EMPTY
10196: LIST
10197: LIST
10198: LIST
10199: ADD
10200: ST_TO_ADDR
10201: GO 10157
10203: POP
10204: POP
// end ;
10205: LD_VAR 0 1
10209: RET
// export function InitGameRules ; var Unavailable_Techs , Unavailable_Builds ; var i , j ; begin
10210: LD_INT 0
10212: PPUSH
10213: PPUSH
10214: PPUSH
10215: PPUSH
10216: PPUSH
// case Game_Type of 10 :
10217: LD_EXP 31
10221: PUSH
10222: LD_INT 10
10224: DOUBLE
10225: EQUAL
10226: IFTRUE 10230
10228: GO 10241
10230: POP
// def_game_rules := 1 ; 11 :
10231: LD_ADDR_EXP 32
10235: PUSH
10236: LD_INT 1
10238: ST_TO_ADDR
10239: GO 10261
10241: LD_INT 11
10243: DOUBLE
10244: EQUAL
10245: IFTRUE 10249
10247: GO 10260
10249: POP
// def_game_rules := 3 ; end ;
10250: LD_ADDR_EXP 32
10254: PUSH
10255: LD_INT 3
10257: ST_TO_ADDR
10258: GO 10261
10260: POP
// case def_game_rules of 0 :
10261: LD_EXP 32
10265: PUSH
10266: LD_INT 0
10268: DOUBLE
10269: EQUAL
10270: IFTRUE 10274
10272: GO 10279
10274: POP
// exit ; 1 :
10275: GO 12337
10277: GO 12237
10279: LD_INT 1
10281: DOUBLE
10282: EQUAL
10283: IFTRUE 10287
10285: GO 10503
10287: POP
// begin def_base_level := 2 ;
10288: LD_ADDR_EXP 33
10292: PUSH
10293: LD_INT 2
10295: ST_TO_ADDR
// def_amount_of_people := 2 ;
10296: LD_ADDR_EXP 34
10300: PUSH
10301: LD_INT 2
10303: ST_TO_ADDR
// def_skill_level := 1 ;
10304: LD_ADDR_EXP 35
10308: PUSH
10309: LD_INT 1
10311: ST_TO_ADDR
// def_starting_resources := 2 ;
10312: LD_ADDR_EXP 36
10316: PUSH
10317: LD_INT 2
10319: ST_TO_ADDR
// def_shipments_density := 1 ;
10320: LD_ADDR_EXP 37
10324: PUSH
10325: LD_INT 1
10327: ST_TO_ADDR
// def_extra_oil_deposits := 0 ;
10328: LD_ADDR_EXP 38
10332: PUSH
10333: LD_INT 0
10335: ST_TO_ADDR
// def_extra_sib_deposits := 1 ;
10336: LD_ADDR_EXP 39
10340: PUSH
10341: LD_INT 1
10343: ST_TO_ADDR
// def_shared_vision := 1 ;
10344: LD_ADDR_EXP 40
10348: PUSH
10349: LD_INT 1
10351: ST_TO_ADDR
// def_morale_flags := 3 ;
10352: LD_ADDR_EXP 41
10356: PUSH
10357: LD_INT 3
10359: ST_TO_ADDR
// def_siberite_detection := 1 ;
10360: LD_ADDR_EXP 42
10364: PUSH
10365: LD_INT 1
10367: ST_TO_ADDR
// def_people_respawning := 1 ;
10368: LD_ADDR_EXP 43
10372: PUSH
10373: LD_INT 1
10375: ST_TO_ADDR
// def_amount_of_apemen := 1 ;
10376: LD_ADDR_EXP 44
10380: PUSH
10381: LD_INT 1
10383: ST_TO_ADDR
// def_siberite_bomb := 0 ;
10384: LD_ADDR_EXP 45
10388: PUSH
10389: LD_INT 0
10391: ST_TO_ADDR
// def_builduptime := 2 ;
10392: LD_ADDR_EXP 46
10396: PUSH
10397: LD_INT 2
10399: ST_TO_ADDR
// Unavailable_Techs := [ ] ;
10400: LD_ADDR_VAR 0 2
10404: PUSH
10405: EMPTY
10406: ST_TO_ADDR
// Unavailable_Builds := [ ] ;
10407: LD_ADDR_VAR 0 3
10411: PUSH
10412: EMPTY
10413: ST_TO_ADDR
// Banned_Weapons := [ ] ;
10414: LD_ADDR_LOC 13
10418: PUSH
10419: EMPTY
10420: ST_TO_ADDR
// Banned_Chassis := [ ] ;
10421: LD_ADDR_LOC 14
10425: PUSH
10426: EMPTY
10427: ST_TO_ADDR
// Banned_Controls := [ ] ;
10428: LD_ADDR_LOC 15
10432: PUSH
10433: EMPTY
10434: ST_TO_ADDR
// Banned_Engines := [ ] ;
10435: LD_ADDR_LOC 16
10439: PUSH
10440: EMPTY
10441: ST_TO_ADDR
// Restricted_Builds := [ [ b_Behemoth ] , [ b_Armoury , b_Barracks ] , [ b_Breastwork , b_Bunker , b_Turret ] ] ;
10442: LD_ADDR_LOC 11
10446: PUSH
10447: LD_INT 37
10449: PUSH
10450: EMPTY
10451: LIST
10452: PUSH
10453: LD_INT 4
10455: PUSH
10456: LD_INT 5
10458: PUSH
10459: EMPTY
10460: LIST
10461: LIST
10462: PUSH
10463: LD_INT 31
10465: PUSH
10466: LD_INT 32
10468: PUSH
10469: LD_INT 33
10471: PUSH
10472: EMPTY
10473: LIST
10474: LIST
10475: LIST
10476: PUSH
10477: EMPTY
10478: LIST
10479: LIST
10480: LIST
10481: ST_TO_ADDR
// Restricted_Builds_Amount := [ 2 , 2 , 4 ] ;
10482: LD_ADDR_LOC 12
10486: PUSH
10487: LD_INT 2
10489: PUSH
10490: LD_INT 2
10492: PUSH
10493: LD_INT 4
10495: PUSH
10496: EMPTY
10497: LIST
10498: LIST
10499: LIST
10500: ST_TO_ADDR
// end ; 2 :
10501: GO 12237
10503: LD_INT 2
10505: DOUBLE
10506: EQUAL
10507: IFTRUE 10511
10509: GO 10720
10511: POP
// begin def_base_level := 1 ;
10512: LD_ADDR_EXP 33
10516: PUSH
10517: LD_INT 1
10519: ST_TO_ADDR
// def_amount_of_people := 2 ;
10520: LD_ADDR_EXP 34
10524: PUSH
10525: LD_INT 2
10527: ST_TO_ADDR
// def_skill_level := 3 ;
10528: LD_ADDR_EXP 35
10532: PUSH
10533: LD_INT 3
10535: ST_TO_ADDR
// def_starting_resources := 3 ;
10536: LD_ADDR_EXP 36
10540: PUSH
10541: LD_INT 3
10543: ST_TO_ADDR
// def_shipments_density := 2 ;
10544: LD_ADDR_EXP 37
10548: PUSH
10549: LD_INT 2
10551: ST_TO_ADDR
// def_extra_oil_deposits := 1 ;
10552: LD_ADDR_EXP 38
10556: PUSH
10557: LD_INT 1
10559: ST_TO_ADDR
// def_extra_sib_deposits := 2 ;
10560: LD_ADDR_EXP 39
10564: PUSH
10565: LD_INT 2
10567: ST_TO_ADDR
// def_shared_vision := 1 ;
10568: LD_ADDR_EXP 40
10572: PUSH
10573: LD_INT 1
10575: ST_TO_ADDR
// def_morale_flags := 0 ;
10576: LD_ADDR_EXP 41
10580: PUSH
10581: LD_INT 0
10583: ST_TO_ADDR
// def_siberite_detection := 1 ;
10584: LD_ADDR_EXP 42
10588: PUSH
10589: LD_INT 1
10591: ST_TO_ADDR
// def_people_respawning := 0 ;
10592: LD_ADDR_EXP 43
10596: PUSH
10597: LD_INT 0
10599: ST_TO_ADDR
// def_amount_of_apemen := 0 ;
10600: LD_ADDR_EXP 44
10604: PUSH
10605: LD_INT 0
10607: ST_TO_ADDR
// def_siberite_bomb := 0 ;
10608: LD_ADDR_EXP 45
10612: PUSH
10613: LD_INT 0
10615: ST_TO_ADDR
// def_builduptime := 2 ;
10616: LD_ADDR_EXP 46
10620: PUSH
10621: LD_INT 2
10623: ST_TO_ADDR
// Unavailable_Techs := [ tech_ApeLang ] ;
10624: LD_ADDR_VAR 0 2
10628: PUSH
10629: LD_INT 1
10631: PUSH
10632: EMPTY
10633: LIST
10634: ST_TO_ADDR
// Unavailable_Builds := [ ] ;
10635: LD_ADDR_VAR 0 3
10639: PUSH
10640: EMPTY
10641: ST_TO_ADDR
// Banned_Weapons := [ ] ;
10642: LD_ADDR_LOC 13
10646: PUSH
10647: EMPTY
10648: ST_TO_ADDR
// Banned_Chassis := [ ] ;
10649: LD_ADDR_LOC 14
10653: PUSH
10654: EMPTY
10655: ST_TO_ADDR
// Banned_Controls := [ ] ;
10656: LD_ADDR_LOC 15
10660: PUSH
10661: EMPTY
10662: ST_TO_ADDR
// Banned_Engines := [ ] ;
10663: LD_ADDR_LOC 16
10667: PUSH
10668: EMPTY
10669: ST_TO_ADDR
// Restricted_Builds := [ [ b_Armoury , b_Barracks ] , [ b_Breastwork , b_Bunker , b_Turret ] ] ;
10670: LD_ADDR_LOC 11
10674: PUSH
10675: LD_INT 4
10677: PUSH
10678: LD_INT 5
10680: PUSH
10681: EMPTY
10682: LIST
10683: LIST
10684: PUSH
10685: LD_INT 31
10687: PUSH
10688: LD_INT 32
10690: PUSH
10691: LD_INT 33
10693: PUSH
10694: EMPTY
10695: LIST
10696: LIST
10697: LIST
10698: PUSH
10699: EMPTY
10700: LIST
10701: LIST
10702: ST_TO_ADDR
// Restricted_Builds_Amount := [ 1 , 2 ] ;
10703: LD_ADDR_LOC 12
10707: PUSH
10708: LD_INT 1
10710: PUSH
10711: LD_INT 2
10713: PUSH
10714: EMPTY
10715: LIST
10716: LIST
10717: ST_TO_ADDR
// end ; 3 :
10718: GO 12237
10720: LD_INT 3
10722: DOUBLE
10723: EQUAL
10724: IFTRUE 10728
10726: GO 10971
10728: POP
// begin def_base_level := 1 ;
10729: LD_ADDR_EXP 33
10733: PUSH
10734: LD_INT 1
10736: ST_TO_ADDR
// def_amount_of_people := 2 ;
10737: LD_ADDR_EXP 34
10741: PUSH
10742: LD_INT 2
10744: ST_TO_ADDR
// def_skill_level := 3 ;
10745: LD_ADDR_EXP 35
10749: PUSH
10750: LD_INT 3
10752: ST_TO_ADDR
// def_starting_resources := 3 ;
10753: LD_ADDR_EXP 36
10757: PUSH
10758: LD_INT 3
10760: ST_TO_ADDR
// def_shipments_density := 1 ;
10761: LD_ADDR_EXP 37
10765: PUSH
10766: LD_INT 1
10768: ST_TO_ADDR
// def_extra_oil_deposits := 0 ;
10769: LD_ADDR_EXP 38
10773: PUSH
10774: LD_INT 0
10776: ST_TO_ADDR
// def_extra_sib_deposits := 1 ;
10777: LD_ADDR_EXP 39
10781: PUSH
10782: LD_INT 1
10784: ST_TO_ADDR
// def_shared_vision := 1 ;
10785: LD_ADDR_EXP 40
10789: PUSH
10790: LD_INT 1
10792: ST_TO_ADDR
// def_morale_flags := 0 ;
10793: LD_ADDR_EXP 41
10797: PUSH
10798: LD_INT 0
10800: ST_TO_ADDR
// def_siberite_detection := 1 ;
10801: LD_ADDR_EXP 42
10805: PUSH
10806: LD_INT 1
10808: ST_TO_ADDR
// def_people_respawning := 0 ;
10809: LD_ADDR_EXP 43
10813: PUSH
10814: LD_INT 0
10816: ST_TO_ADDR
// def_amount_of_apemen := 2 ;
10817: LD_ADDR_EXP 44
10821: PUSH
10822: LD_INT 2
10824: ST_TO_ADDR
// def_siberite_bomb := 0 ;
10825: LD_ADDR_EXP 45
10829: PUSH
10830: LD_INT 0
10832: ST_TO_ADDR
// def_builduptime := 1 ;
10833: LD_ADDR_EXP 46
10837: PUSH
10838: LD_INT 1
10840: ST_TO_ADDR
// Unavailable_Techs := [ tech_Behemoth ] ;
10841: LD_ADDR_VAR 0 2
10845: PUSH
10846: LD_INT 23
10848: PUSH
10849: EMPTY
10850: LIST
10851: ST_TO_ADDR
// Unavailable_Builds := [ b_Workshop , b_Behemoth , b_Bunker , b_Turret , b_Control_Tower , b_ext_track , b_ext_stitch , b_ext_siberium , b_ext_rocket , b_ext_radio , b_ext_radar , b_ext_noncombat , b_ext_laser , b_ext_gun , b_ext_computer ] ;
10852: LD_ADDR_VAR 0 3
10856: PUSH
10857: LD_INT 2
10859: PUSH
10860: LD_INT 37
10862: PUSH
10863: LD_INT 32
10865: PUSH
10866: LD_INT 33
10868: PUSH
10869: LD_INT 36
10871: PUSH
10872: LD_INT 16
10874: PUSH
10875: LD_INT 23
10877: PUSH
10878: LD_INT 21
10880: PUSH
10881: LD_INT 18
10883: PUSH
10884: LD_INT 22
10886: PUSH
10887: LD_INT 20
10889: PUSH
10890: LD_INT 19
10892: PUSH
10893: LD_INT 25
10895: PUSH
10896: LD_INT 17
10898: PUSH
10899: LD_INT 24
10901: PUSH
10902: EMPTY
10903: LIST
10904: LIST
10905: LIST
10906: LIST
10907: LIST
10908: LIST
10909: LIST
10910: LIST
10911: LIST
10912: LIST
10913: LIST
10914: LIST
10915: LIST
10916: LIST
10917: LIST
10918: ST_TO_ADDR
// Banned_Weapons := [ ] ;
10919: LD_ADDR_LOC 13
10923: PUSH
10924: EMPTY
10925: ST_TO_ADDR
// Banned_Chassis := [ ] ;
10926: LD_ADDR_LOC 14
10930: PUSH
10931: EMPTY
10932: ST_TO_ADDR
// Banned_Controls := [ ] ;
10933: LD_ADDR_LOC 15
10937: PUSH
10938: EMPTY
10939: ST_TO_ADDR
// Banned_Engines := [ ] ;
10940: LD_ADDR_LOC 16
10944: PUSH
10945: EMPTY
10946: ST_TO_ADDR
// Restricted_Builds := [ ] ;
10947: LD_ADDR_LOC 11
10951: PUSH
10952: EMPTY
10953: ST_TO_ADDR
// Restricted_Builds_Amount := [ ] ;
10954: LD_ADDR_LOC 12
10958: PUSH
10959: EMPTY
10960: ST_TO_ADDR
// No_Mechs := true ;
10961: LD_ADDR_EXP 49
10965: PUSH
10966: LD_INT 1
10968: ST_TO_ADDR
// end ; 4 :
10969: GO 12237
10971: LD_INT 4
10973: DOUBLE
10974: EQUAL
10975: IFTRUE 10979
10977: GO 11154
10979: POP
// begin def_base_level := 1 ;
10980: LD_ADDR_EXP 33
10984: PUSH
10985: LD_INT 1
10987: ST_TO_ADDR
// def_amount_of_people := 2 ;
10988: LD_ADDR_EXP 34
10992: PUSH
10993: LD_INT 2
10995: ST_TO_ADDR
// def_skill_level := 3 ;
10996: LD_ADDR_EXP 35
11000: PUSH
11001: LD_INT 3
11003: ST_TO_ADDR
// def_starting_resources := 3 ;
11004: LD_ADDR_EXP 36
11008: PUSH
11009: LD_INT 3
11011: ST_TO_ADDR
// def_shipments_density := 2 ;
11012: LD_ADDR_EXP 37
11016: PUSH
11017: LD_INT 2
11019: ST_TO_ADDR
// def_extra_oil_deposits := 1 ;
11020: LD_ADDR_EXP 38
11024: PUSH
11025: LD_INT 1
11027: ST_TO_ADDR
// def_extra_sib_deposits := 2 ;
11028: LD_ADDR_EXP 39
11032: PUSH
11033: LD_INT 2
11035: ST_TO_ADDR
// def_shared_vision := 1 ;
11036: LD_ADDR_EXP 40
11040: PUSH
11041: LD_INT 1
11043: ST_TO_ADDR
// def_morale_flags := 0 ;
11044: LD_ADDR_EXP 41
11048: PUSH
11049: LD_INT 0
11051: ST_TO_ADDR
// def_siberite_detection := 1 ;
11052: LD_ADDR_EXP 42
11056: PUSH
11057: LD_INT 1
11059: ST_TO_ADDR
// def_people_respawning := 0 ;
11060: LD_ADDR_EXP 43
11064: PUSH
11065: LD_INT 0
11067: ST_TO_ADDR
// def_amount_of_apemen := 0 ;
11068: LD_ADDR_EXP 44
11072: PUSH
11073: LD_INT 0
11075: ST_TO_ADDR
// def_siberite_bomb := 1 ;
11076: LD_ADDR_EXP 45
11080: PUSH
11081: LD_INT 1
11083: ST_TO_ADDR
// def_builduptime := 3 ;
11084: LD_ADDR_EXP 46
11088: PUSH
11089: LD_INT 3
11091: ST_TO_ADDR
// Unavailable_Techs := [ tech_ApeLang ] ;
11092: LD_ADDR_VAR 0 2
11096: PUSH
11097: LD_INT 1
11099: PUSH
11100: EMPTY
11101: LIST
11102: ST_TO_ADDR
// Unavailable_Builds := [ ] ;
11103: LD_ADDR_VAR 0 3
11107: PUSH
11108: EMPTY
11109: ST_TO_ADDR
// Banned_Weapons := [ ] ;
11110: LD_ADDR_LOC 13
11114: PUSH
11115: EMPTY
11116: ST_TO_ADDR
// Banned_Chassis := [ ] ;
11117: LD_ADDR_LOC 14
11121: PUSH
11122: EMPTY
11123: ST_TO_ADDR
// Banned_Controls := [ ] ;
11124: LD_ADDR_LOC 15
11128: PUSH
11129: EMPTY
11130: ST_TO_ADDR
// Banned_Engines := [ ] ;
11131: LD_ADDR_LOC 16
11135: PUSH
11136: EMPTY
11137: ST_TO_ADDR
// Restricted_Builds := [ ] ;
11138: LD_ADDR_LOC 11
11142: PUSH
11143: EMPTY
11144: ST_TO_ADDR
// Restricted_Builds_Amount := [ ] ;
11145: LD_ADDR_LOC 12
11149: PUSH
11150: EMPTY
11151: ST_TO_ADDR
// end ; 5 :
11152: GO 12237
11154: LD_INT 5
11156: DOUBLE
11157: EQUAL
11158: IFTRUE 11162
11160: GO 11411
11162: POP
// begin def_base_level := 0 ;
11163: LD_ADDR_EXP 33
11167: PUSH
11168: LD_INT 0
11170: ST_TO_ADDR
// def_amount_of_people := 0 ;
11171: LD_ADDR_EXP 34
11175: PUSH
11176: LD_INT 0
11178: ST_TO_ADDR
// def_skill_level := 0 ;
11179: LD_ADDR_EXP 35
11183: PUSH
11184: LD_INT 0
11186: ST_TO_ADDR
// def_starting_resources := 0 ;
11187: LD_ADDR_EXP 36
11191: PUSH
11192: LD_INT 0
11194: ST_TO_ADDR
// def_shipments_density := 0 ;
11195: LD_ADDR_EXP 37
11199: PUSH
11200: LD_INT 0
11202: ST_TO_ADDR
// def_extra_oil_deposits := 0 ;
11203: LD_ADDR_EXP 38
11207: PUSH
11208: LD_INT 0
11210: ST_TO_ADDR
// def_extra_sib_deposits := 0 ;
11211: LD_ADDR_EXP 39
11215: PUSH
11216: LD_INT 0
11218: ST_TO_ADDR
// def_shared_vision := 1 ;
11219: LD_ADDR_EXP 40
11223: PUSH
11224: LD_INT 1
11226: ST_TO_ADDR
// def_morale_flags := 0 ;
11227: LD_ADDR_EXP 41
11231: PUSH
11232: LD_INT 0
11234: ST_TO_ADDR
// def_siberite_detection := 0 ;
11235: LD_ADDR_EXP 42
11239: PUSH
11240: LD_INT 0
11242: ST_TO_ADDR
// def_people_respawning := 1 ;
11243: LD_ADDR_EXP 43
11247: PUSH
11248: LD_INT 1
11250: ST_TO_ADDR
// def_amount_of_apemen := 1 ;
11251: LD_ADDR_EXP 44
11255: PUSH
11256: LD_INT 1
11258: ST_TO_ADDR
// def_siberite_bomb := 0 ;
11259: LD_ADDR_EXP 45
11263: PUSH
11264: LD_INT 0
11266: ST_TO_ADDR
// def_builduptime := 0 ;
11267: LD_ADDR_EXP 46
11271: PUSH
11272: LD_INT 0
11274: ST_TO_ADDR
// Unavailable_Techs := [ tech_Laser , tech_ApeNeural ] ;
11275: LD_ADDR_VAR 0 2
11279: PUSH
11280: LD_INT 10
11282: PUSH
11283: LD_INT 3
11285: PUSH
11286: EMPTY
11287: LIST
11288: LIST
11289: ST_TO_ADDR
// Unavailable_Builds := [ b_Lab_Computer , b_Lab_Siberium , b_Lab_Spacetime , b_Lab_Biological , b_Barracks , b_ext_Computer , b_ext_Siberium , b_Turret , b_Control_Tower ] ;
11290: LD_ADDR_VAR 0 3
11294: PUSH
11295: LD_INT 12
11297: PUSH
11298: LD_INT 11
11300: PUSH
11301: LD_INT 14
11303: PUSH
11304: LD_INT 13
11306: PUSH
11307: LD_INT 5
11309: PUSH
11310: LD_INT 24
11312: PUSH
11313: LD_INT 21
11315: PUSH
11316: LD_INT 33
11318: PUSH
11319: LD_INT 36
11321: PUSH
11322: EMPTY
11323: LIST
11324: LIST
11325: LIST
11326: LIST
11327: LIST
11328: LIST
11329: LIST
11330: LIST
11331: LIST
11332: ST_TO_ADDR
// Banned_Weapons := [ ar_Control_Tower ] ;
11333: LD_ADDR_LOC 13
11337: PUSH
11338: LD_INT 31
11340: PUSH
11341: EMPTY
11342: LIST
11343: ST_TO_ADDR
// Banned_Chassis := [ ] ;
11344: LD_ADDR_LOC 14
11348: PUSH
11349: EMPTY
11350: ST_TO_ADDR
// Banned_Controls := [ control_Remote ] ;
11351: LD_ADDR_LOC 15
11355: PUSH
11356: LD_INT 2
11358: PUSH
11359: EMPTY
11360: LIST
11361: ST_TO_ADDR
// Banned_Engines := [ ] ;
11362: LD_ADDR_LOC 16
11366: PUSH
11367: EMPTY
11368: ST_TO_ADDR
// Restricted_Builds := [ [ b_Armoury ] , [ b_Breastwork , b_Bunker ] ] ;
11369: LD_ADDR_LOC 11
11373: PUSH
11374: LD_INT 4
11376: PUSH
11377: EMPTY
11378: LIST
11379: PUSH
11380: LD_INT 31
11382: PUSH
11383: LD_INT 32
11385: PUSH
11386: EMPTY
11387: LIST
11388: LIST
11389: PUSH
11390: EMPTY
11391: LIST
11392: LIST
11393: ST_TO_ADDR
// Restricted_Builds_Amount := [ 1 , 1 ] ;
11394: LD_ADDR_LOC 12
11398: PUSH
11399: LD_INT 1
11401: PUSH
11402: LD_INT 1
11404: PUSH
11405: EMPTY
11406: LIST
11407: LIST
11408: ST_TO_ADDR
// end ; 6 :
11409: GO 12237
11411: LD_INT 6
11413: DOUBLE
11414: EQUAL
11415: IFTRUE 11419
11417: GO 11622
11419: POP
// begin def_base_level := 1 ;
11420: LD_ADDR_EXP 33
11424: PUSH
11425: LD_INT 1
11427: ST_TO_ADDR
// def_amount_of_people := 2 ;
11428: LD_ADDR_EXP 34
11432: PUSH
11433: LD_INT 2
11435: ST_TO_ADDR
// def_skill_level := 3 ;
11436: LD_ADDR_EXP 35
11440: PUSH
11441: LD_INT 3
11443: ST_TO_ADDR
// def_starting_resources := 3 ;
11444: LD_ADDR_EXP 36
11448: PUSH
11449: LD_INT 3
11451: ST_TO_ADDR
// def_shipments_density := 1 ;
11452: LD_ADDR_EXP 37
11456: PUSH
11457: LD_INT 1
11459: ST_TO_ADDR
// def_extra_oil_deposits := 0 ;
11460: LD_ADDR_EXP 38
11464: PUSH
11465: LD_INT 0
11467: ST_TO_ADDR
// def_extra_sib_deposits := 1 ;
11468: LD_ADDR_EXP 39
11472: PUSH
11473: LD_INT 1
11475: ST_TO_ADDR
// def_shared_vision := 1 ;
11476: LD_ADDR_EXP 40
11480: PUSH
11481: LD_INT 1
11483: ST_TO_ADDR
// def_morale_flags := 0 ;
11484: LD_ADDR_EXP 41
11488: PUSH
11489: LD_INT 0
11491: ST_TO_ADDR
// def_siberite_detection := 1 ;
11492: LD_ADDR_EXP 42
11496: PUSH
11497: LD_INT 1
11499: ST_TO_ADDR
// def_people_respawning := 2 ;
11500: LD_ADDR_EXP 43
11504: PUSH
11505: LD_INT 2
11507: ST_TO_ADDR
// def_amount_of_apemen := 1 ;
11508: LD_ADDR_EXP 44
11512: PUSH
11513: LD_INT 1
11515: ST_TO_ADDR
// def_siberite_bomb := 0 ;
11516: LD_ADDR_EXP 45
11520: PUSH
11521: LD_INT 0
11523: ST_TO_ADDR
// def_builduptime := 1 ;
11524: LD_ADDR_EXP 46
11528: PUSH
11529: LD_INT 1
11531: ST_TO_ADDR
// Unavailable_Techs := [ tech_Behemoth ] ;
11532: LD_ADDR_VAR 0 2
11536: PUSH
11537: LD_INT 23
11539: PUSH
11540: EMPTY
11541: LIST
11542: ST_TO_ADDR
// Unavailable_Builds := [ b_Workshop , b_Behemoth , b_Breastwork , b_Bunker , b_Turret ] ;
11543: LD_ADDR_VAR 0 3
11547: PUSH
11548: LD_INT 2
11550: PUSH
11551: LD_INT 37
11553: PUSH
11554: LD_INT 31
11556: PUSH
11557: LD_INT 32
11559: PUSH
11560: LD_INT 33
11562: PUSH
11563: EMPTY
11564: LIST
11565: LIST
11566: LIST
11567: LIST
11568: LIST
11569: ST_TO_ADDR
// Banned_Weapons := [ ] ;
11570: LD_ADDR_LOC 13
11574: PUSH
11575: EMPTY
11576: ST_TO_ADDR
// Banned_Chassis := [ ] ;
11577: LD_ADDR_LOC 14
11581: PUSH
11582: EMPTY
11583: ST_TO_ADDR
// Banned_Controls := [ ] ;
11584: LD_ADDR_LOC 15
11588: PUSH
11589: EMPTY
11590: ST_TO_ADDR
// Banned_Engines := [ ] ;
11591: LD_ADDR_LOC 16
11595: PUSH
11596: EMPTY
11597: ST_TO_ADDR
// Restricted_Builds := [ ] ;
11598: LD_ADDR_LOC 11
11602: PUSH
11603: EMPTY
11604: ST_TO_ADDR
// Restricted_Builds_Amount := [ ] ;
11605: LD_ADDR_LOC 12
11609: PUSH
11610: EMPTY
11611: ST_TO_ADDR
// No_Mechs := true ;
11612: LD_ADDR_EXP 49
11616: PUSH
11617: LD_INT 1
11619: ST_TO_ADDR
// end ; 7 :
11620: GO 12237
11622: LD_INT 7
11624: DOUBLE
11625: EQUAL
11626: IFTRUE 11630
11628: GO 11828
11630: POP
// begin def_base_level := 1 ;
11631: LD_ADDR_EXP 33
11635: PUSH
11636: LD_INT 1
11638: ST_TO_ADDR
// def_amount_of_people := 2 ;
11639: LD_ADDR_EXP 34
11643: PUSH
11644: LD_INT 2
11646: ST_TO_ADDR
// def_skill_level := 3 ;
11647: LD_ADDR_EXP 35
11651: PUSH
11652: LD_INT 3
11654: ST_TO_ADDR
// def_starting_resources := 3 ;
11655: LD_ADDR_EXP 36
11659: PUSH
11660: LD_INT 3
11662: ST_TO_ADDR
// def_shipments_density := 1 ;
11663: LD_ADDR_EXP 37
11667: PUSH
11668: LD_INT 1
11670: ST_TO_ADDR
// def_extra_oil_deposits := 1 ;
11671: LD_ADDR_EXP 38
11675: PUSH
11676: LD_INT 1
11678: ST_TO_ADDR
// def_extra_sib_deposits := 2 ;
11679: LD_ADDR_EXP 39
11683: PUSH
11684: LD_INT 2
11686: ST_TO_ADDR
// def_shared_vision := 1 ;
11687: LD_ADDR_EXP 40
11691: PUSH
11692: LD_INT 1
11694: ST_TO_ADDR
// def_morale_flags := 0 ;
11695: LD_ADDR_EXP 41
11699: PUSH
11700: LD_INT 0
11702: ST_TO_ADDR
// def_siberite_detection := 1 ;
11703: LD_ADDR_EXP 42
11707: PUSH
11708: LD_INT 1
11710: ST_TO_ADDR
// def_people_respawning := 0 ;
11711: LD_ADDR_EXP 43
11715: PUSH
11716: LD_INT 0
11718: ST_TO_ADDR
// def_amount_of_apemen := 1 ;
11719: LD_ADDR_EXP 44
11723: PUSH
11724: LD_INT 1
11726: ST_TO_ADDR
// def_siberite_bomb := 0 ;
11727: LD_ADDR_EXP 45
11731: PUSH
11732: LD_INT 0
11734: ST_TO_ADDR
// def_builduptime := 3 ;
11735: LD_ADDR_EXP 46
11739: PUSH
11740: LD_INT 3
11742: ST_TO_ADDR
// Unavailable_Techs := [ tech_Behemoth ] ;
11743: LD_ADDR_VAR 0 2
11747: PUSH
11748: LD_INT 23
11750: PUSH
11751: EMPTY
11752: LIST
11753: ST_TO_ADDR
// Unavailable_Builds := [ b_Behemoth ] ;
11754: LD_ADDR_VAR 0 3
11758: PUSH
11759: LD_INT 37
11761: PUSH
11762: EMPTY
11763: LIST
11764: ST_TO_ADDR
// Banned_Weapons := [ ] ;
11765: LD_ADDR_LOC 13
11769: PUSH
11770: EMPTY
11771: ST_TO_ADDR
// Banned_Chassis := [ ] ;
11772: LD_ADDR_LOC 14
11776: PUSH
11777: EMPTY
11778: ST_TO_ADDR
// Banned_Controls := [ ] ;
11779: LD_ADDR_LOC 15
11783: PUSH
11784: EMPTY
11785: ST_TO_ADDR
// Banned_Engines := [ ] ;
11786: LD_ADDR_LOC 16
11790: PUSH
11791: EMPTY
11792: ST_TO_ADDR
// Restricted_Builds := [ [ b_Breastwork , b_Bunker , b_Turret ] ] ;
11793: LD_ADDR_LOC 11
11797: PUSH
11798: LD_INT 31
11800: PUSH
11801: LD_INT 32
11803: PUSH
11804: LD_INT 33
11806: PUSH
11807: EMPTY
11808: LIST
11809: LIST
11810: LIST
11811: PUSH
11812: EMPTY
11813: LIST
11814: ST_TO_ADDR
// Restricted_Builds_Amount := [ 10 ] ;
11815: LD_ADDR_LOC 12
11819: PUSH
11820: LD_INT 10
11822: PUSH
11823: EMPTY
11824: LIST
11825: ST_TO_ADDR
// end ; 8 :
11826: GO 12237
11828: LD_INT 8
11830: DOUBLE
11831: EQUAL
11832: IFTRUE 11836
11834: GO 12236
11836: POP
// begin def_base_level := 0 ;
11837: LD_ADDR_EXP 33
11841: PUSH
11842: LD_INT 0
11844: ST_TO_ADDR
// def_amount_of_people := Rand ( 0 , 1 ) ;
11845: LD_ADDR_EXP 34
11849: PUSH
11850: LD_INT 0
11852: PPUSH
11853: LD_INT 1
11855: PPUSH
11856: CALL_OW 12
11860: ST_TO_ADDR
// def_skill_level := 0 ;
11861: LD_ADDR_EXP 35
11865: PUSH
11866: LD_INT 0
11868: ST_TO_ADDR
// def_starting_resources := 2 ;
11869: LD_ADDR_EXP 36
11873: PUSH
11874: LD_INT 2
11876: ST_TO_ADDR
// def_shipments_density := 1 ;
11877: LD_ADDR_EXP 37
11881: PUSH
11882: LD_INT 1
11884: ST_TO_ADDR
// def_extra_oil_deposits := 0 ;
11885: LD_ADDR_EXP 38
11889: PUSH
11890: LD_INT 0
11892: ST_TO_ADDR
// def_extra_sib_deposits := 0 ;
11893: LD_ADDR_EXP 39
11897: PUSH
11898: LD_INT 0
11900: ST_TO_ADDR
// def_shared_vision := 1 ;
11901: LD_ADDR_EXP 40
11905: PUSH
11906: LD_INT 1
11908: ST_TO_ADDR
// def_morale_flags := Rand ( 0 , 2 ) ;
11909: LD_ADDR_EXP 41
11913: PUSH
11914: LD_INT 0
11916: PPUSH
11917: LD_INT 2
11919: PPUSH
11920: CALL_OW 12
11924: ST_TO_ADDR
// def_siberite_detection := 0 ;
11925: LD_ADDR_EXP 42
11929: PUSH
11930: LD_INT 0
11932: ST_TO_ADDR
// def_people_respawning := 0 ;
11933: LD_ADDR_EXP 43
11937: PUSH
11938: LD_INT 0
11940: ST_TO_ADDR
// def_amount_of_apemen := 2 ;
11941: LD_ADDR_EXP 44
11945: PUSH
11946: LD_INT 2
11948: ST_TO_ADDR
// def_siberite_bomb := 0 ;
11949: LD_ADDR_EXP 45
11953: PUSH
11954: LD_INT 0
11956: ST_TO_ADDR
// def_builduptime := 0 ;
11957: LD_ADDR_EXP 46
11961: PUSH
11962: LD_INT 0
11964: ST_TO_ADDR
// Unavailable_Techs := [ tech_Behemoth , tech_SibDet , tech_Rocket , tech_OilEng , tech_OilPow , tech_Gun , tech_AdvRocket , tech_AdvMet , tech_Mortar , tech_Bazooka , tech_HidCam , tech_PartInvis ] ;
11965: LD_ADDR_VAR 0 2
11969: PUSH
11970: LD_INT 23
11972: PUSH
11973: LD_INT 20
11975: PUSH
11976: LD_INT 40
11978: PUSH
11979: LD_INT 47
11981: PUSH
11982: LD_INT 46
11984: PUSH
11985: LD_INT 39
11987: PUSH
11988: LD_INT 71
11990: PUSH
11991: LD_INT 34
11993: PUSH
11994: LD_INT 41
11996: PUSH
11997: LD_INT 44
11999: PUSH
12000: LD_INT 17
12002: PUSH
12003: LD_INT 16
12005: PUSH
12006: EMPTY
12007: LIST
12008: LIST
12009: LIST
12010: LIST
12011: LIST
12012: LIST
12013: LIST
12014: LIST
12015: LIST
12016: LIST
12017: LIST
12018: LIST
12019: ST_TO_ADDR
// Unavailable_Builds := [ b_Behemoth , b_Barracks , b_Lab_Biological , b_Teleport , b_Lab_Computer , b_Lab_Opto , b_Lab_Siberium , b_Lab_Spacetime , b_Oil_Mine , b_Siberite_Mine , b_Siberite_Power , b_Ext_Computer , b_Ext_Laser , b_Ext_Radar , b_Ext_Siberium , b_Ext_Radio , b_Control_Tower ] ;
12020: LD_ADDR_VAR 0 3
12024: PUSH
12025: LD_INT 37
12027: PUSH
12028: LD_INT 5
12030: PUSH
12031: LD_INT 13
12033: PUSH
12034: LD_INT 34
12036: PUSH
12037: LD_INT 12
12039: PUSH
12040: LD_INT 15
12042: PUSH
12043: LD_INT 11
12045: PUSH
12046: LD_INT 14
12048: PUSH
12049: LD_INT 29
12051: PUSH
12052: LD_INT 30
12054: PUSH
12055: LD_INT 28
12057: PUSH
12058: LD_INT 24
12060: PUSH
12061: LD_INT 25
12063: PUSH
12064: LD_INT 20
12066: PUSH
12067: LD_INT 21
12069: PUSH
12070: LD_INT 22
12072: PUSH
12073: LD_INT 36
12075: PUSH
12076: EMPTY
12077: LIST
12078: LIST
12079: LIST
12080: LIST
12081: LIST
12082: LIST
12083: LIST
12084: LIST
12085: LIST
12086: LIST
12087: LIST
12088: LIST
12089: LIST
12090: LIST
12091: LIST
12092: LIST
12093: LIST
12094: ST_TO_ADDR
// Banned_Weapons := [ ] ;
12095: LD_ADDR_LOC 13
12099: PUSH
12100: EMPTY
12101: ST_TO_ADDR
// Banned_Chassis := [ ar_half_tracked ] ;
12102: LD_ADDR_LOC 14
12106: PUSH
12107: LD_INT 14
12109: PUSH
12110: EMPTY
12111: LIST
12112: ST_TO_ADDR
// Banned_Controls := [ ] ;
12113: LD_ADDR_LOC 15
12117: PUSH
12118: EMPTY
12119: ST_TO_ADDR
// Banned_Engines := [ ] ;
12120: LD_ADDR_LOC 16
12124: PUSH
12125: EMPTY
12126: ST_TO_ADDR
// Restricted_Builds := [ [ b_Breastwork , b_Bunker ] , [ b_Armoury ] ] ;
12127: LD_ADDR_LOC 11
12131: PUSH
12132: LD_INT 31
12134: PUSH
12135: LD_INT 32
12137: PUSH
12138: EMPTY
12139: LIST
12140: LIST
12141: PUSH
12142: LD_INT 4
12144: PUSH
12145: EMPTY
12146: LIST
12147: PUSH
12148: EMPTY
12149: LIST
12150: LIST
12151: ST_TO_ADDR
// Restricted_Builds_Amount := [ 2 , 1 ] ;
12152: LD_ADDR_LOC 12
12156: PUSH
12157: LD_INT 2
12159: PUSH
12160: LD_INT 1
12162: PUSH
12163: EMPTY
12164: LIST
12165: LIST
12166: ST_TO_ADDR
// for i := 1 to 8 do
12167: LD_ADDR_VAR 0 4
12171: PUSH
12172: DOUBLE
12173: LD_INT 1
12175: DEC
12176: ST_TO_ADDR
12177: LD_INT 8
12179: PUSH
12180: FOR_TO
12181: IFFALSE 12232
// if ( Side_Nations [ i ] = 3 ) then
12183: LD_EXP 20
12187: PUSH
12188: LD_VAR 0 4
12192: ARRAY
12193: PUSH
12194: LD_INT 3
12196: EQUAL
12197: IFFALSE 12230
// Side_Nations := Replace ( Side_Nations , i , Rand ( 1 , 2 ) ) ;
12199: LD_ADDR_EXP 20
12203: PUSH
12204: LD_EXP 20
12208: PPUSH
12209: LD_VAR 0 4
12213: PPUSH
12214: LD_INT 1
12216: PPUSH
12217: LD_INT 2
12219: PPUSH
12220: CALL_OW 12
12224: PPUSH
12225: CALL_OW 1
12229: ST_TO_ADDR
12230: GO 12180
12232: POP
12233: POP
// end ; end ;
12234: GO 12237
12236: POP
// for i := 1 to 8 do
12237: LD_ADDR_VAR 0 4
12241: PUSH
12242: DOUBLE
12243: LD_INT 1
12245: DEC
12246: ST_TO_ADDR
12247: LD_INT 8
12249: PUSH
12250: FOR_TO
12251: IFFALSE 12335
// if Side_Positions [ i ] then
12253: LD_EXP 19
12257: PUSH
12258: LD_VAR 0 4
12262: ARRAY
12263: IFFALSE 12333
// begin for j in Unavailable_Techs do
12265: LD_ADDR_VAR 0 5
12269: PUSH
12270: LD_VAR 0 2
12274: PUSH
12275: FOR_IN
12276: IFFALSE 12297
// SetTech ( j , i , 0 ) ;
12278: LD_VAR 0 5
12282: PPUSH
12283: LD_VAR 0 4
12287: PPUSH
12288: LD_INT 0
12290: PPUSH
12291: CALL_OW 322
12295: GO 12275
12297: POP
12298: POP
// for j in Unavailable_Builds do
12299: LD_ADDR_VAR 0 5
12303: PUSH
12304: LD_VAR 0 3
12308: PUSH
12309: FOR_IN
12310: IFFALSE 12331
// SetRestrict ( j , i , 0 ) ;
12312: LD_VAR 0 5
12316: PPUSH
12317: LD_VAR 0 4
12321: PPUSH
12322: LD_INT 0
12324: PPUSH
12325: CALL_OW 324
12329: GO 12309
12331: POP
12332: POP
// end ;
12333: GO 12250
12335: POP
12336: POP
// end ;
12337: LD_VAR 0 1
12341: RET
// export function InitLimits ; var i , j , k , amount , btype , list ; begin
12342: LD_INT 0
12344: PPUSH
12345: PPUSH
12346: PPUSH
12347: PPUSH
12348: PPUSH
12349: PPUSH
12350: PPUSH
// for i := 1 to Restricted_Builds do
12351: LD_ADDR_VAR 0 2
12355: PUSH
12356: DOUBLE
12357: LD_INT 1
12359: DEC
12360: ST_TO_ADDR
12361: LD_LOC 11
12365: PUSH
12366: FOR_TO
12367: IFFALSE 12677
// begin case Restricted_Builds [ i ] [ 1 ] of b_Breastwork , b_Bunker , b_Turret :
12369: LD_LOC 11
12373: PUSH
12374: LD_VAR 0 2
12378: ARRAY
12379: PUSH
12380: LD_INT 1
12382: ARRAY
12383: PUSH
12384: LD_INT 31
12386: DOUBLE
12387: EQUAL
12388: IFTRUE 12404
12390: LD_INT 32
12392: DOUBLE
12393: EQUAL
12394: IFTRUE 12404
12396: LD_INT 33
12398: DOUBLE
12399: EQUAL
12400: IFTRUE 12404
12402: GO 12415
12404: POP
// btype := #Turrets ; b_Armoury , b_Barracks :
12405: LD_ADDR_VAR 0 6
12409: PUSH
12410: LD_STRING #Turrets
12412: ST_TO_ADDR
12413: GO 12460
12415: LD_INT 4
12417: DOUBLE
12418: EQUAL
12419: IFTRUE 12429
12421: LD_INT 5
12423: DOUBLE
12424: EQUAL
12425: IFTRUE 12429
12427: GO 12440
12429: POP
// btype := #Armouries ; b_Behemoth :
12430: LD_ADDR_VAR 0 6
12434: PUSH
12435: LD_STRING #Armouries
12437: ST_TO_ADDR
12438: GO 12460
12440: LD_INT 37
12442: DOUBLE
12443: EQUAL
12444: IFTRUE 12448
12446: GO 12459
12448: POP
// btype := #Behemoths ; end ;
12449: LD_ADDR_VAR 0 6
12453: PUSH
12454: LD_STRING #Behemoths
12456: ST_TO_ADDR
12457: GO 12460
12459: POP
// list := [ ] ;
12460: LD_ADDR_VAR 0 7
12464: PUSH
12465: EMPTY
12466: ST_TO_ADDR
// for j := 1 to 8 do
12467: LD_ADDR_VAR 0 3
12471: PUSH
12472: DOUBLE
12473: LD_INT 1
12475: DEC
12476: ST_TO_ADDR
12477: LD_INT 8
12479: PUSH
12480: FOR_TO
12481: IFFALSE 12574
// if Side_Positions [ j ] then
12483: LD_EXP 19
12487: PUSH
12488: LD_VAR 0 3
12492: ARRAY
12493: IFFALSE 12572
// begin amount := 0 ;
12495: LD_ADDR_VAR 0 5
12499: PUSH
12500: LD_INT 0
12502: ST_TO_ADDR
// for k in Restricted_Builds [ i ] do
12503: LD_ADDR_VAR 0 4
12507: PUSH
12508: LD_LOC 11
12512: PUSH
12513: LD_VAR 0 2
12517: ARRAY
12518: PUSH
12519: FOR_IN
12520: IFFALSE 12568
// amount := amount + FilterAllUnits ( [ [ f_side , j ] , [ f_btype , k ] ] ) ;
12522: LD_ADDR_VAR 0 5
12526: PUSH
12527: LD_VAR 0 5
12531: PUSH
12532: LD_INT 22
12534: PUSH
12535: LD_VAR 0 3
12539: PUSH
12540: EMPTY
12541: LIST
12542: LIST
12543: PUSH
12544: LD_INT 30
12546: PUSH
12547: LD_VAR 0 4
12551: PUSH
12552: EMPTY
12553: LIST
12554: LIST
12555: PUSH
12556: EMPTY
12557: LIST
12558: LIST
12559: PPUSH
12560: CALL_OW 69
12564: PLUS
12565: ST_TO_ADDR
12566: GO 12519
12568: POP
12569: POP
// break ;
12570: GO 12574
// end ;
12572: GO 12480
12574: POP
12575: POP
// list := [ ] ;
12576: LD_ADDR_VAR 0 7
12580: PUSH
12581: EMPTY
12582: ST_TO_ADDR
// for j := 1 to 8 do
12583: LD_ADDR_VAR 0 3
12587: PUSH
12588: DOUBLE
12589: LD_INT 1
12591: DEC
12592: ST_TO_ADDR
12593: LD_INT 8
12595: PUSH
12596: FOR_TO
12597: IFFALSE 12617
// list := list ^ amount ;
12599: LD_ADDR_VAR 0 7
12603: PUSH
12604: LD_VAR 0 7
12608: PUSH
12609: LD_VAR 0 5
12613: ADD
12614: ST_TO_ADDR
12615: GO 12596
12617: POP
12618: POP
// Already_Built := Already_Built ^ [ list ] ;
12619: LD_ADDR_LOC 17
12623: PUSH
12624: LD_LOC 17
12628: PUSH
12629: LD_VAR 0 7
12633: PUSH
12634: EMPTY
12635: LIST
12636: ADD
12637: ST_TO_ADDR
// Limits_Info := Limits_Info ^ [ btype , amount , Restricted_Builds_Amount [ i ] ] ;
12638: LD_ADDR_LOC 18
12642: PUSH
12643: LD_LOC 18
12647: PUSH
12648: LD_VAR 0 6
12652: PUSH
12653: LD_VAR 0 5
12657: PUSH
12658: LD_LOC 12
12662: PUSH
12663: LD_VAR 0 2
12667: ARRAY
12668: PUSH
12669: EMPTY
12670: LIST
12671: LIST
12672: LIST
12673: ADD
12674: ST_TO_ADDR
// end ;
12675: GO 12366
12677: POP
12678: POP
// Cheaters := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
12679: LD_ADDR_LOC 19
12683: PUSH
12684: LD_INT 0
12686: PUSH
12687: LD_INT 0
12689: PUSH
12690: LD_INT 0
12692: PUSH
12693: LD_INT 0
12695: PUSH
12696: LD_INT 0
12698: PUSH
12699: LD_INT 0
12701: PUSH
12702: LD_INT 0
12704: PUSH
12705: LD_INT 0
12707: PUSH
12708: EMPTY
12709: LIST
12710: LIST
12711: LIST
12712: LIST
12713: LIST
12714: LIST
12715: LIST
12716: LIST
12717: ST_TO_ADDR
// if Limits_Info then
12718: LD_LOC 18
12722: IFFALSE 12738
// Limits_Info := #Limits ^ Limits_Info ;
12724: LD_ADDR_LOC 18
12728: PUSH
12729: LD_STRING #Limits
12731: PUSH
12732: LD_LOC 18
12736: ADD
12737: ST_TO_ADDR
// end ;
12738: LD_VAR 0 1
12742: RET
// export function ExecuteLimits ( un , BType , side , old_side , count ) ; var i , j , Is_Cheater ; begin
12743: LD_INT 0
12745: PPUSH
12746: PPUSH
12747: PPUSH
12748: PPUSH
// for i := 1 to Restricted_Builds do
12749: LD_ADDR_VAR 0 7
12753: PUSH
12754: DOUBLE
12755: LD_INT 1
12757: DEC
12758: ST_TO_ADDR
12759: LD_LOC 11
12763: PUSH
12764: FOR_TO
12765: IFFALSE 13188
// if BType in Restricted_Builds [ i ] then
12767: LD_VAR 0 2
12771: PUSH
12772: LD_LOC 11
12776: PUSH
12777: LD_VAR 0 7
12781: ARRAY
12782: IN
12783: IFFALSE 13186
// begin if old_side then
12785: LD_VAR 0 4
12789: IFFALSE 12915
// if Already_Built [ i ] [ side ] + count > Restricted_Builds_Amount [ i ] then
12791: LD_LOC 17
12795: PUSH
12796: LD_VAR 0 7
12800: ARRAY
12801: PUSH
12802: LD_VAR 0 3
12806: ARRAY
12807: PUSH
12808: LD_VAR 0 5
12812: PLUS
12813: PUSH
12814: LD_LOC 12
12818: PUSH
12819: LD_VAR 0 7
12823: ARRAY
12824: GREATER
12825: IFFALSE 12851
// begin SetSide ( un , old_side ) ;
12827: LD_VAR 0 1
12831: PPUSH
12832: LD_VAR 0 4
12836: PPUSH
12837: CALL_OW 235
// count := 0 ;
12841: LD_ADDR_VAR 0 5
12845: PUSH
12846: LD_INT 0
12848: ST_TO_ADDR
// end else
12849: GO 12915
// Already_Built := Replace ( Already_Built , i , Replace ( Already_Built [ i ] , old_side , Already_Built [ i ] [ old_side ] - count ) ) ;
12851: LD_ADDR_LOC 17
12855: PUSH
12856: LD_LOC 17
12860: PPUSH
12861: LD_VAR 0 7
12865: PPUSH
12866: LD_LOC 17
12870: PUSH
12871: LD_VAR 0 7
12875: ARRAY
12876: PPUSH
12877: LD_VAR 0 4
12881: PPUSH
12882: LD_LOC 17
12886: PUSH
12887: LD_VAR 0 7
12891: ARRAY
12892: PUSH
12893: LD_VAR 0 4
12897: ARRAY
12898: PUSH
12899: LD_VAR 0 5
12903: MINUS
12904: PPUSH
12905: CALL_OW 1
12909: PPUSH
12910: CALL_OW 1
12914: ST_TO_ADDR
// Already_Built := Replace ( Already_Built , i , Replace ( Already_Built [ i ] , side , Already_Built [ i ] [ side ] + count ) ) ;
12915: LD_ADDR_LOC 17
12919: PUSH
12920: LD_LOC 17
12924: PPUSH
12925: LD_VAR 0 7
12929: PPUSH
12930: LD_LOC 17
12934: PUSH
12935: LD_VAR 0 7
12939: ARRAY
12940: PPUSH
12941: LD_VAR 0 3
12945: PPUSH
12946: LD_LOC 17
12950: PUSH
12951: LD_VAR 0 7
12955: ARRAY
12956: PUSH
12957: LD_VAR 0 3
12961: ARRAY
12962: PUSH
12963: LD_VAR 0 5
12967: PLUS
12968: PPUSH
12969: CALL_OW 1
12973: PPUSH
12974: CALL_OW 1
12978: ST_TO_ADDR
// if count <> 0 and ( side = your_side ) then
12979: LD_VAR 0 5
12983: PUSH
12984: LD_INT 0
12986: NONEQUAL
12987: PUSH
12988: LD_VAR 0 3
12992: PUSH
12993: LD_OWVAR 2
12997: EQUAL
12998: AND
12999: IFFALSE 13042
// Limits_Info := Replace ( Limits_Info , 3 * i , Already_Built [ i ] [ side ] ) ;
13001: LD_ADDR_LOC 18
13005: PUSH
13006: LD_LOC 18
13010: PPUSH
13011: LD_INT 3
13013: PUSH
13014: LD_VAR 0 7
13018: MUL
13019: PPUSH
13020: LD_LOC 17
13024: PUSH
13025: LD_VAR 0 7
13029: ARRAY
13030: PUSH
13031: LD_VAR 0 3
13035: ARRAY
13036: PPUSH
13037: CALL_OW 1
13041: ST_TO_ADDR
// if Already_Built [ i ] [ side ] > Restricted_Builds_Amount [ i ] then
13042: LD_LOC 17
13046: PUSH
13047: LD_VAR 0 7
13051: ARRAY
13052: PUSH
13053: LD_VAR 0 3
13057: ARRAY
13058: PUSH
13059: LD_LOC 12
13063: PUSH
13064: LD_VAR 0 7
13068: ARRAY
13069: GREATER
13070: IFFALSE 13097
// begin Cheaters := Replace ( Cheaters , side , 1 ) ;
13072: LD_ADDR_LOC 19
13076: PUSH
13077: LD_LOC 19
13081: PPUSH
13082: LD_VAR 0 3
13086: PPUSH
13087: LD_INT 1
13089: PPUSH
13090: CALL_OW 1
13094: ST_TO_ADDR
// end else
13095: GO 13184
// begin for j := 1 to Restricted_Builds do
13097: LD_ADDR_VAR 0 8
13101: PUSH
13102: DOUBLE
13103: LD_INT 1
13105: DEC
13106: ST_TO_ADDR
13107: LD_LOC 11
13111: PUSH
13112: FOR_TO
13113: IFFALSE 13157
// if Already_Built [ j ] [ side ] > Restricted_Builds_Amount [ j ] then
13115: LD_LOC 17
13119: PUSH
13120: LD_VAR 0 8
13124: ARRAY
13125: PUSH
13126: LD_VAR 0 3
13130: ARRAY
13131: PUSH
13132: LD_LOC 12
13136: PUSH
13137: LD_VAR 0 8
13141: ARRAY
13142: GREATER
13143: IFFALSE 13155
// begin Is_Cheater := true ;
13145: LD_ADDR_VAR 0 9
13149: PUSH
13150: LD_INT 1
13152: ST_TO_ADDR
// break ;
13153: GO 13157
// end ;
13155: GO 13112
13157: POP
13158: POP
// Cheaters := Replace ( Cheaters , side , Is_Cheater ) ;
13159: LD_ADDR_LOC 19
13163: PUSH
13164: LD_LOC 19
13168: PPUSH
13169: LD_VAR 0 3
13173: PPUSH
13174: LD_VAR 0 9
13178: PPUSH
13179: CALL_OW 1
13183: ST_TO_ADDR
// end ; break ;
13184: GO 13188
// end ;
13186: GO 12764
13188: POP
13189: POP
// end ;
13190: LD_VAR 0 6
13194: RET
// on VehicleConstructionStarted ( factory , chassis , engine , control , weapon ) do begin if ( weapon in Banned_Weapons ) or ( chassis in Banned_Chassis ) or ( control in Banned_Controls ) or ( engine in Banned_Engines ) then
13195: LD_VAR 0 5
13199: PUSH
13200: LD_LOC 13
13204: IN
13205: PUSH
13206: LD_VAR 0 2
13210: PUSH
13211: LD_LOC 14
13215: IN
13216: OR
13217: PUSH
13218: LD_VAR 0 4
13222: PUSH
13223: LD_LOC 15
13227: IN
13228: OR
13229: PUSH
13230: LD_VAR 0 3
13234: PUSH
13235: LD_LOC 16
13239: IN
13240: OR
13241: IFFALSE 13252
// ComCancel ( factory ) ;
13243: LD_VAR 0 1
13247: PPUSH
13248: CALL_OW 127
// end ;
13252: PPOPN 5
13254: END
// on WeaponPlaced ( building , weapon ) do begin if ( weapon in Banned_Weapons ) then
13255: LD_VAR 0 2
13259: PUSH
13260: LD_LOC 13
13264: IN
13265: IFFALSE 13276
// ComCancel ( building ) ;
13267: LD_VAR 0 1
13271: PPUSH
13272: CALL_OW 127
// end ; end_of_file
13276: PPOPN 2
13278: END
// every 1 1$0 + 0 0$0.3 marked 10 do
13279: GO 13281
13281: DISABLE
// begin CreateCratesAnywhere ( Rand ( 4 , 5 ) , true ) ;
13282: LD_INT 4
13284: PPUSH
13285: LD_INT 5
13287: PPUSH
13288: CALL_OW 12
13292: PPUSH
13293: LD_INT 1
13295: PPUSH
13296: CALL_OW 57
// enable ;
13300: ENABLE
// end ;
13301: END
// every 0 0$1 + 0 0$0.6 marked 10 do var i , amount ;
13302: GO 13304
13304: DISABLE
13305: LD_INT 0
13307: PPUSH
13308: PPUSH
// begin case tick of 1 .. 1 1$0 :
13309: LD_OWVAR 1
13313: PUSH
13314: LD_INT 1
13316: DOUBLE
13317: GREATEREQUAL
13318: IFFALSE 13326
13320: LD_INT 2100
13322: DOUBLE
13323: LESSEQUAL
13324: IFTRUE 13328
13326: GO 13356
13328: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$10 , 0 0$30 ) ) ; 1 1$0 + 1 .. 5 5$0 :
13329: LD_EXP 9
13333: PUSH
13334: LD_INT 100
13336: DIVREAL
13337: PUSH
13338: LD_INT 350
13340: PPUSH
13341: LD_INT 1050
13343: PPUSH
13344: CALL_OW 12
13348: MUL
13349: PPUSH
13350: CALL_OW 67
13354: GO 13658
13356: LD_INT 2100
13358: PUSH
13359: LD_INT 1
13361: PLUS
13362: DOUBLE
13363: GREATEREQUAL
13364: IFFALSE 13372
13366: LD_INT 10500
13368: DOUBLE
13369: LESSEQUAL
13370: IFTRUE 13374
13372: GO 13402
13374: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$30 , 0 0$45 ) ) ; 5 5$0 + 1 .. 10 10$0 :
13375: LD_EXP 9
13379: PUSH
13380: LD_INT 100
13382: DIVREAL
13383: PUSH
13384: LD_INT 1050
13386: PPUSH
13387: LD_INT 1575
13389: PPUSH
13390: CALL_OW 12
13394: MUL
13395: PPUSH
13396: CALL_OW 67
13400: GO 13658
13402: LD_INT 10500
13404: PUSH
13405: LD_INT 1
13407: PLUS
13408: DOUBLE
13409: GREATEREQUAL
13410: IFFALSE 13418
13412: LD_INT 21000
13414: DOUBLE
13415: LESSEQUAL
13416: IFTRUE 13420
13418: GO 13448
13420: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$45 , 1 1$0 ) ) ; 10 10$0 + 1 .. 20 20$0 :
13421: LD_EXP 9
13425: PUSH
13426: LD_INT 100
13428: DIVREAL
13429: PUSH
13430: LD_INT 1575
13432: PPUSH
13433: LD_INT 2100
13435: PPUSH
13436: CALL_OW 12
13440: MUL
13441: PPUSH
13442: CALL_OW 67
13446: GO 13658
13448: LD_INT 21000
13450: PUSH
13451: LD_INT 1
13453: PLUS
13454: DOUBLE
13455: GREATEREQUAL
13456: IFFALSE 13464
13458: LD_INT 42000
13460: DOUBLE
13461: LESSEQUAL
13462: IFTRUE 13466
13464: GO 13494
13466: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$0 , 1 1$15 ) ) ; 20 20$0 + 1 .. 30 30$0 :
13467: LD_EXP 9
13471: PUSH
13472: LD_INT 100
13474: DIVREAL
13475: PUSH
13476: LD_INT 2100
13478: PPUSH
13479: LD_INT 2625
13481: PPUSH
13482: CALL_OW 12
13486: MUL
13487: PPUSH
13488: CALL_OW 67
13492: GO 13658
13494: LD_INT 42000
13496: PUSH
13497: LD_INT 1
13499: PLUS
13500: DOUBLE
13501: GREATEREQUAL
13502: IFFALSE 13510
13504: LD_INT 63000
13506: DOUBLE
13507: LESSEQUAL
13508: IFTRUE 13512
13510: GO 13540
13512: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$15 , 1 1$30 ) ) ; 30 30$0 + 1 .. 50 50$0 :
13513: LD_EXP 9
13517: PUSH
13518: LD_INT 100
13520: DIVREAL
13521: PUSH
13522: LD_INT 2625
13524: PPUSH
13525: LD_INT 3150
13527: PPUSH
13528: CALL_OW 12
13532: MUL
13533: PPUSH
13534: CALL_OW 67
13538: GO 13658
13540: LD_INT 63000
13542: PUSH
13543: LD_INT 1
13545: PLUS
13546: DOUBLE
13547: GREATEREQUAL
13548: IFFALSE 13556
13550: LD_INT 105000
13552: DOUBLE
13553: LESSEQUAL
13554: IFTRUE 13558
13556: GO 13586
13558: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$30 , 1 1$45 ) ) ; 50 50$0 + 1 .. 300 300$0 :
13559: LD_EXP 9
13563: PUSH
13564: LD_INT 100
13566: DIVREAL
13567: PUSH
13568: LD_INT 3150
13570: PPUSH
13571: LD_INT 3675
13573: PPUSH
13574: CALL_OW 12
13578: MUL
13579: PPUSH
13580: CALL_OW 67
13584: GO 13658
13586: LD_INT 105000
13588: PUSH
13589: LD_INT 1
13591: PLUS
13592: DOUBLE
13593: GREATEREQUAL
13594: IFFALSE 13602
13596: LD_INT 630000
13598: DOUBLE
13599: LESSEQUAL
13600: IFTRUE 13604
13602: GO 13632
13604: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$45 , 2 2$0 ) ) ; else
13605: LD_EXP 9
13609: PUSH
13610: LD_INT 100
13612: DIVREAL
13613: PUSH
13614: LD_INT 3675
13616: PPUSH
13617: LD_INT 4200
13619: PPUSH
13620: CALL_OW 12
13624: MUL
13625: PPUSH
13626: CALL_OW 67
13630: GO 13658
13632: POP
// Wait ( shipments_density / 100 * Rand ( 2 2$0 , 2 2$30 ) ) ; end ;
13633: LD_EXP 9
13637: PUSH
13638: LD_INT 100
13640: DIVREAL
13641: PUSH
13642: LD_INT 4200
13644: PPUSH
13645: LD_INT 5250
13647: PPUSH
13648: CALL_OW 12
13652: MUL
13653: PPUSH
13654: CALL_OW 67
// amount := Rand ( 3 , 5 ) ;
13658: LD_ADDR_VAR 0 2
13662: PUSH
13663: LD_INT 3
13665: PPUSH
13666: LD_INT 5
13668: PPUSH
13669: CALL_OW 12
13673: ST_TO_ADDR
// for i in ( Side_Positions diff [ 0 ] ) do
13674: LD_ADDR_VAR 0 1
13678: PUSH
13679: LD_EXP 19
13683: PUSH
13684: LD_INT 0
13686: PUSH
13687: EMPTY
13688: LIST
13689: DIFF
13690: PUSH
13691: FOR_IN
13692: IFFALSE 13741
// CreateCratesXYR ( amount , start_def [ i ] [ 1 ] , start_def [ i ] [ 2 ] , 20 , true ) ;
13694: LD_VAR 0 2
13698: PPUSH
13699: LD_EXP 25
13703: PUSH
13704: LD_VAR 0 1
13708: ARRAY
13709: PUSH
13710: LD_INT 1
13712: ARRAY
13713: PPUSH
13714: LD_EXP 25
13718: PUSH
13719: LD_VAR 0 1
13723: ARRAY
13724: PUSH
13725: LD_INT 2
13727: ARRAY
13728: PPUSH
13729: LD_INT 20
13731: PPUSH
13732: LD_INT 1
13734: PPUSH
13735: CALL_OW 56
13739: GO 13691
13741: POP
13742: POP
// enable ;
13743: ENABLE
// end ;
13744: PPOPN 2
13746: END
// every 0 0$20 + 0 0$0.9 marked 10 do var i , filter ;
13747: GO 13749
13749: DISABLE
13750: LD_INT 0
13752: PPUSH
13753: PPUSH
// begin if GetResourceArea ( MZBaseArea , mat_cans ) < ( ( 200 - shipments_density ) / 100 * 5 ) then
13754: LD_INT 9
13756: PPUSH
13757: LD_INT 1
13759: PPUSH
13760: CALL_OW 287
13764: PUSH
13765: LD_INT 200
13767: PUSH
13768: LD_EXP 9
13772: MINUS
13773: PUSH
13774: LD_INT 100
13776: DIVREAL
13777: PUSH
13778: LD_INT 5
13780: MUL
13781: LESS
13782: IFFALSE 13805
// CreateCratesArea ( Rand ( 3 , 5 ) , MZBaseArea , true ) ;
13784: LD_INT 3
13786: PPUSH
13787: LD_INT 5
13789: PPUSH
13790: CALL_OW 12
13794: PPUSH
13795: LD_INT 9
13797: PPUSH
13798: LD_INT 1
13800: PPUSH
13801: CALL_OW 55
// enable ;
13805: ENABLE
// end ; end_of_file
13806: PPOPN 2
13808: END
// function apeman_init ; begin
13809: LD_INT 0
13811: PPUSH
// uc_side := 0 ;
13812: LD_ADDR_OWVAR 20
13816: PUSH
13817: LD_INT 0
13819: ST_TO_ADDR
// uc_nation := nation_nature ;
13820: LD_ADDR_OWVAR 21
13824: PUSH
13825: LD_INT 0
13827: ST_TO_ADDR
// hc_class := class_apeman ;
13828: LD_ADDR_OWVAR 28
13832: PUSH
13833: LD_INT 12
13835: ST_TO_ADDR
// hc_basic_skills := [ 1 , 1 , 1 , 1 ] ;
13836: LD_ADDR_OWVAR 30
13840: PUSH
13841: LD_INT 1
13843: PUSH
13844: LD_INT 1
13846: PUSH
13847: LD_INT 1
13849: PUSH
13850: LD_INT 1
13852: PUSH
13853: EMPTY
13854: LIST
13855: LIST
13856: LIST
13857: LIST
13858: ST_TO_ADDR
// hc_skills := [ 1 , 1 , 1 , 1 ] ;
13859: LD_ADDR_OWVAR 31
13863: PUSH
13864: LD_INT 1
13866: PUSH
13867: LD_INT 1
13869: PUSH
13870: LD_INT 1
13872: PUSH
13873: LD_INT 1
13875: PUSH
13876: EMPTY
13877: LIST
13878: LIST
13879: LIST
13880: LIST
13881: ST_TO_ADDR
// hc_attr := [ 10 , 12 ] ;
13882: LD_ADDR_OWVAR 29
13886: PUSH
13887: LD_INT 10
13889: PUSH
13890: LD_INT 12
13892: PUSH
13893: EMPTY
13894: LIST
13895: LIST
13896: ST_TO_ADDR
// hc_sex := sex_male ;
13897: LD_ADDR_OWVAR 27
13901: PUSH
13902: LD_INT 1
13904: ST_TO_ADDR
// hc_importance := 0 ;
13905: LD_ADDR_OWVAR 32
13909: PUSH
13910: LD_INT 0
13912: ST_TO_ADDR
// hc_agressivity := Rand ( - 20 , 20 ) ;
13913: LD_ADDR_OWVAR 35
13917: PUSH
13918: LD_INT 20
13920: NEG
13921: PPUSH
13922: LD_INT 20
13924: PPUSH
13925: CALL_OW 12
13929: ST_TO_ADDR
// end ;
13930: LD_VAR 0 1
13934: RET
// function prepare_apemen ; var i , j , un , ape , first , d1 , d2 ; begin
13935: LD_INT 0
13937: PPUSH
13938: PPUSH
13939: PPUSH
13940: PPUSH
13941: PPUSH
13942: PPUSH
13943: PPUSH
13944: PPUSH
// if not amount_of_apemen then
13945: LD_EXP 11
13949: NOT
13950: IFFALSE 13954
// exit ;
13952: GO 14144
// ape := 0 ;
13954: LD_ADDR_VAR 0 5
13958: PUSH
13959: LD_INT 0
13961: ST_TO_ADDR
// repeat Wait ( ( ape + 1 ) * Rand ( 0 0$10 , 1 1$0 ) ) ;
13962: LD_VAR 0 5
13966: PUSH
13967: LD_INT 1
13969: PLUS
13970: PUSH
13971: LD_INT 350
13973: PPUSH
13974: LD_INT 2100
13976: PPUSH
13977: CALL_OW 12
13981: MUL
13982: PPUSH
13983: CALL_OW 67
// apeman_init ;
13987: CALL 13809 0 0
// PlaceUnitArea ( CreateHuman , Base1ApeArea , false ) ;
13991: CALL_OW 44
13995: PPUSH
13996: LD_INT 10
13998: PPUSH
13999: LD_INT 0
14001: PPUSH
14002: CALL_OW 49
// PlaceUnitArea ( CreateHuman , Base2ApeArea , false ) ;
14006: CALL_OW 44
14010: PPUSH
14011: LD_INT 11
14013: PPUSH
14014: LD_INT 0
14016: PPUSH
14017: CALL_OW 49
// PlaceUnitArea ( CreateHuman , Base3ApeArea , false ) ;
14021: CALL_OW 44
14025: PPUSH
14026: LD_INT 12
14028: PPUSH
14029: LD_INT 0
14031: PPUSH
14032: CALL_OW 49
// PlaceUnitArea ( CreateHuman , Base4ApeArea , false ) ;
14036: CALL_OW 44
14040: PPUSH
14041: LD_INT 13
14043: PPUSH
14044: LD_INT 0
14046: PPUSH
14047: CALL_OW 49
// PlaceUnitArea ( CreateHuman , Base5ApeArea , false ) ;
14051: CALL_OW 44
14055: PPUSH
14056: LD_INT 14
14058: PPUSH
14059: LD_INT 0
14061: PPUSH
14062: CALL_OW 49
// PlaceUnitArea ( CreateHuman , Base6ApeArea , false ) ;
14066: CALL_OW 44
14070: PPUSH
14071: LD_INT 15
14073: PPUSH
14074: LD_INT 0
14076: PPUSH
14077: CALL_OW 49
// PlaceUnitArea ( CreateHuman , Base7ApeArea , false ) ;
14081: CALL_OW 44
14085: PPUSH
14086: LD_INT 16
14088: PPUSH
14089: LD_INT 0
14091: PPUSH
14092: CALL_OW 49
// PlaceUnitArea ( CreateHuman , Base8ApeArea , false ) ;
14096: CALL_OW 44
14100: PPUSH
14101: LD_INT 17
14103: PPUSH
14104: LD_INT 0
14106: PPUSH
14107: CALL_OW 49
// Wait ( 3 ) ;
14111: LD_INT 3
14113: PPUSH
14114: CALL_OW 67
// ape := ape + 1 ;
14118: LD_ADDR_VAR 0 5
14122: PUSH
14123: LD_VAR 0 5
14127: PUSH
14128: LD_INT 1
14130: PLUS
14131: ST_TO_ADDR
// until ape >= amount_of_apemen ;
14132: LD_VAR 0 5
14136: PUSH
14137: LD_EXP 11
14141: GREATEREQUAL
14142: IFFALSE 13962
// end ;
14144: LD_VAR 0 1
14148: RET
// every 0 0$15 do
14149: GO 14151
14151: DISABLE
// begin prepare_apemen ;
14152: CALL 13935 0 0
// end ; end_of_file
14156: END
// on BuildingStarted ( b , u ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
14157: LD_VAR 0 1
14161: PPUSH
14162: CALL_OW 266
14166: PUSH
14167: LD_INT 0
14169: PUSH
14170: LD_INT 1
14172: PUSH
14173: EMPTY
14174: LIST
14175: LIST
14176: IN
14177: IFFALSE 14202
// SetBName ( b , @ & GetSide ( b ) ) ;
14179: LD_VAR 0 1
14183: PPUSH
14184: LD_STRING @
14186: PUSH
14187: LD_VAR 0 1
14191: PPUSH
14192: CALL_OW 255
14196: STR
14197: PPUSH
14198: CALL_OW 500
// if def_game_rules then
14202: LD_EXP 32
14206: IFFALSE 14243
// ExecuteLimits ( b , GetBType ( b ) , GetSide ( b ) , 0 , 1 ) ;
14208: LD_VAR 0 1
14212: PPUSH
14213: LD_VAR 0 1
14217: PPUSH
14218: CALL_OW 266
14222: PPUSH
14223: LD_VAR 0 1
14227: PPUSH
14228: CALL_OW 255
14232: PPUSH
14233: LD_INT 0
14235: PPUSH
14236: LD_INT 1
14238: PPUSH
14239: CALL 12743 0 5
// end ;
14243: PPOPN 2
14245: END
// on BuildingCaptured ( b , o , e ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
14246: LD_VAR 0 1
14250: PPUSH
14251: CALL_OW 266
14255: PUSH
14256: LD_INT 0
14258: PUSH
14259: LD_INT 1
14261: PUSH
14262: EMPTY
14263: LIST
14264: LIST
14265: IN
14266: IFFALSE 14291
// SetBName ( b , @ & GetSide ( b ) ) ;
14268: LD_VAR 0 1
14272: PPUSH
14273: LD_STRING @
14275: PUSH
14276: LD_VAR 0 1
14280: PPUSH
14281: CALL_OW 255
14285: STR
14286: PPUSH
14287: CALL_OW 500
// if def_game_rules then
14291: LD_EXP 32
14295: IFFALSE 14334
// ExecuteLimits ( b , GetBType ( b ) , GetSide ( b ) , o , 1 ) ;
14297: LD_VAR 0 1
14301: PPUSH
14302: LD_VAR 0 1
14306: PPUSH
14307: CALL_OW 266
14311: PPUSH
14312: LD_VAR 0 1
14316: PPUSH
14317: CALL_OW 255
14321: PPUSH
14322: LD_VAR 0 2
14326: PPUSH
14327: LD_INT 1
14329: PPUSH
14330: CALL 12743 0 5
// end ;
14334: PPOPN 3
14336: END
// on UnitDestroyed ( j ) do var x , y , pos , dir ;
14337: LD_INT 0
14339: PPUSH
14340: PPUSH
14341: PPUSH
14342: PPUSH
// begin if GetBType ( j ) in [ b_depot , b_warehouse ] then
14343: LD_VAR 0 1
14347: PPUSH
14348: CALL_OW 266
14352: PUSH
14353: LD_INT 0
14355: PUSH
14356: LD_INT 1
14358: PUSH
14359: EMPTY
14360: LIST
14361: LIST
14362: IN
14363: IFFALSE 14445
// begin pos := Side_Positions [ GetSide ( j ) ] ;
14365: LD_ADDR_VAR 0 4
14369: PUSH
14370: LD_EXP 19
14374: PUSH
14375: LD_VAR 0 1
14379: PPUSH
14380: CALL_OW 255
14384: ARRAY
14385: ST_TO_ADDR
// x := start_def [ pos ] [ 1 ] ;
14386: LD_ADDR_VAR 0 2
14390: PUSH
14391: LD_EXP 25
14395: PUSH
14396: LD_VAR 0 4
14400: ARRAY
14401: PUSH
14402: LD_INT 1
14404: ARRAY
14405: ST_TO_ADDR
// y := start_def [ pos ] [ 2 ] ;
14406: LD_ADDR_VAR 0 3
14410: PUSH
14411: LD_EXP 25
14415: PUSH
14416: LD_VAR 0 4
14420: ARRAY
14421: PUSH
14422: LD_INT 2
14424: ARRAY
14425: ST_TO_ADDR
// KillBattleFlag ( FindBattleFlag ( x , y ) ) ;
14426: LD_VAR 0 2
14430: PPUSH
14431: LD_VAR 0 3
14435: PPUSH
14436: CALL_OW 420
14440: PPUSH
14441: CALL_OW 419
// end ; if def_game_rules then
14445: LD_EXP 32
14449: IFFALSE 14548
// if ( GetType ( j ) = 3 ) then
14451: LD_VAR 0 1
14455: PPUSH
14456: CALL_OW 247
14460: PUSH
14461: LD_INT 3
14463: EQUAL
14464: IFFALSE 14504
// ExecuteLimits ( j , GetBType ( j ) , GetSide ( j ) , 0 , - 1 ) else
14466: LD_VAR 0 1
14470: PPUSH
14471: LD_VAR 0 1
14475: PPUSH
14476: CALL_OW 266
14480: PPUSH
14481: LD_VAR 0 1
14485: PPUSH
14486: CALL_OW 255
14490: PPUSH
14491: LD_INT 0
14493: PPUSH
14494: LD_INT 1
14496: NEG
14497: PPUSH
14498: CALL 12743 0 5
14502: GO 14548
// if ( GetChassis ( j ) = 25 ) then
14504: LD_VAR 0 1
14508: PPUSH
14509: CALL_OW 265
14513: PUSH
14514: LD_INT 25
14516: EQUAL
14517: IFFALSE 14548
// ExecuteLimits ( j , b_behemoth , GetSide ( j ) , 0 , - 1 ) ;
14519: LD_VAR 0 1
14523: PPUSH
14524: LD_INT 37
14526: PPUSH
14527: LD_VAR 0 1
14531: PPUSH
14532: CALL_OW 255
14536: PPUSH
14537: LD_INT 0
14539: PPUSH
14540: LD_INT 1
14542: NEG
14543: PPUSH
14544: CALL 12743 0 5
// end ;
14548: PPOPN 5
14550: END
// on VehicleCaptured ( j , i1 , o , i2 ) do begin if def_game_rules and ( GetChassis ( j ) = 25 ) then
14551: LD_EXP 32
14555: PUSH
14556: LD_VAR 0 1
14560: PPUSH
14561: CALL_OW 265
14565: PUSH
14566: LD_INT 25
14568: EQUAL
14569: AND
14570: IFFALSE 14602
// ExecuteLimits ( j , b_behemoth , GetSide ( j ) , o , 1 ) ;
14572: LD_VAR 0 1
14576: PPUSH
14577: LD_INT 37
14579: PPUSH
14580: LD_VAR 0 1
14584: PPUSH
14585: CALL_OW 255
14589: PPUSH
14590: LD_VAR 0 3
14594: PPUSH
14595: LD_INT 1
14597: PPUSH
14598: CALL 12743 0 5
// end ; end_of_file
14602: PPOPN 4
14604: END
// function CanWinLoose ; begin
14605: LD_INT 0
14607: PPUSH
// Result := true ;
14608: LD_ADDR_VAR 0 1
14612: PUSH
14613: LD_INT 1
14615: ST_TO_ADDR
// if IAmServer and PlayerCount > 0 then
14616: CALL_OW 518
14620: PUSH
14621: CALL_OW 519
14625: PUSH
14626: LD_INT 0
14628: GREATER
14629: AND
14630: IFFALSE 14640
// Result := false ;
14632: LD_ADDR_VAR 0 1
14636: PUSH
14637: LD_INT 0
14639: ST_TO_ADDR
// if IAmSpec and PlayerCount > 1 then
14640: CALL_OW 531
14644: PUSH
14645: CALL_OW 519
14649: PUSH
14650: LD_INT 1
14652: GREATER
14653: AND
14654: IFFALSE 14664
// Result := false ;
14656: LD_ADDR_VAR 0 1
14660: PUSH
14661: LD_INT 0
14663: ST_TO_ADDR
// end ;
14664: LD_VAR 0 1
14668: RET
// function HasPower ( i ) ; begin
14669: LD_INT 0
14671: PPUSH
// if def_people_respawning then
14672: LD_EXP 43
14676: IFFALSE 14767
// Result := FilterAllUnits ( [ [ f_side , i ] , [ f_or , [ f_type , unit_human ] , [ f_control , control_computer ] , [ f_control , control_apeman ] , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) else
14678: LD_ADDR_VAR 0 2
14682: PUSH
14683: LD_INT 22
14685: PUSH
14686: LD_VAR 0 1
14690: PUSH
14691: EMPTY
14692: LIST
14693: LIST
14694: PUSH
14695: LD_INT 2
14697: PUSH
14698: LD_INT 21
14700: PUSH
14701: LD_INT 1
14703: PUSH
14704: EMPTY
14705: LIST
14706: LIST
14707: PUSH
14708: LD_INT 33
14710: PUSH
14711: LD_INT 3
14713: PUSH
14714: EMPTY
14715: LIST
14716: LIST
14717: PUSH
14718: LD_INT 33
14720: PUSH
14721: LD_INT 5
14723: PUSH
14724: EMPTY
14725: LIST
14726: LIST
14727: PUSH
14728: LD_INT 30
14730: PUSH
14731: LD_INT 0
14733: PUSH
14734: EMPTY
14735: LIST
14736: LIST
14737: PUSH
14738: LD_INT 30
14740: PUSH
14741: LD_INT 1
14743: PUSH
14744: EMPTY
14745: LIST
14746: LIST
14747: PUSH
14748: EMPTY
14749: LIST
14750: LIST
14751: LIST
14752: LIST
14753: LIST
14754: LIST
14755: PUSH
14756: EMPTY
14757: LIST
14758: LIST
14759: PPUSH
14760: CALL_OW 69
14764: ST_TO_ADDR
14765: GO 14832
// Result := FilterAllUnits ( [ [ f_side , i ] , [ f_or , [ f_type , unit_human ] , [ f_control , control_computer ] , [ f_control , control_apeman ] ] ] ) ;
14767: LD_ADDR_VAR 0 2
14771: PUSH
14772: LD_INT 22
14774: PUSH
14775: LD_VAR 0 1
14779: PUSH
14780: EMPTY
14781: LIST
14782: LIST
14783: PUSH
14784: LD_INT 2
14786: PUSH
14787: LD_INT 21
14789: PUSH
14790: LD_INT 1
14792: PUSH
14793: EMPTY
14794: LIST
14795: LIST
14796: PUSH
14797: LD_INT 33
14799: PUSH
14800: LD_INT 3
14802: PUSH
14803: EMPTY
14804: LIST
14805: LIST
14806: PUSH
14807: LD_INT 33
14809: PUSH
14810: LD_INT 5
14812: PUSH
14813: EMPTY
14814: LIST
14815: LIST
14816: PUSH
14817: EMPTY
14818: LIST
14819: LIST
14820: LIST
14821: LIST
14822: PUSH
14823: EMPTY
14824: LIST
14825: LIST
14826: PPUSH
14827: CALL_OW 69
14831: ST_TO_ADDR
// end ;
14832: LD_VAR 0 2
14836: RET
// function AlliedSides ( i , j ) ; begin
14837: LD_INT 0
14839: PPUSH
// Result := false ;
14840: LD_ADDR_VAR 0 3
14844: PUSH
14845: LD_INT 0
14847: ST_TO_ADDR
// if ( GetAttitude ( i , j ) = att_friend ) and ( GetAttitude ( j , i ) = att_friend ) and GetAlliedVictory ( i ) and GetAlliedVictory ( j ) then
14848: LD_VAR 0 1
14852: PPUSH
14853: LD_VAR 0 2
14857: PPUSH
14858: CALL_OW 81
14862: PUSH
14863: LD_INT 1
14865: EQUAL
14866: PUSH
14867: LD_VAR 0 2
14871: PPUSH
14872: LD_VAR 0 1
14876: PPUSH
14877: CALL_OW 81
14881: PUSH
14882: LD_INT 1
14884: EQUAL
14885: AND
14886: PUSH
14887: LD_VAR 0 1
14891: PPUSH
14892: CALL_OW 83
14896: AND
14897: PUSH
14898: LD_VAR 0 2
14902: PPUSH
14903: CALL_OW 83
14907: AND
14908: IFFALSE 14918
// Result := true ;
14910: LD_ADDR_VAR 0 3
14914: PUSH
14915: LD_INT 1
14917: ST_TO_ADDR
// end ;
14918: LD_VAR 0 3
14922: RET
// every 0 0$3 trigger CanWinLoose marked 400 do
14923: CALL 14605 0 0
14927: IFFALSE 14946
14929: GO 14931
14931: DISABLE
// begin if observe_game = 0 then
14932: LD_EXP 16
14936: PUSH
14937: LD_INT 0
14939: EQUAL
14940: IFFALSE 14946
// YouLostInMultiplayer ;
14942: CALL_OW 107
// end ;
14946: END
// every 0 0$3 trigger CanWinLoose marked 401 do
14947: CALL 14605 0 0
14951: IFFALSE 14960
14953: GO 14955
14955: DISABLE
// YouWinInMultiplayer ;
14956: CALL_OW 106
14960: END
// every 0 0$3 marked 98 do var i , CanWin ;
14961: GO 14963
14963: DISABLE
14964: LD_INT 0
14966: PPUSH
14967: PPUSH
// begin if not HasPower ( your_side ) then
14968: LD_OWVAR 2
14972: PPUSH
14973: CALL 14669 0 1
14977: NOT
14978: IFFALSE 14989
// begin Multiplayer_Loose_Message ;
14980: CALL_OW 521
// enable ( 400 ) ;
14984: LD_INT 400
14986: ENABLE_MARKED
// end else
14987: GO 15122
// begin CanWin := true ;
14989: LD_ADDR_VAR 0 2
14993: PUSH
14994: LD_INT 1
14996: ST_TO_ADDR
// for i := 1 to 8 do
14997: LD_ADDR_VAR 0 1
15001: PUSH
15002: DOUBLE
15003: LD_INT 1
15005: DEC
15006: ST_TO_ADDR
15007: LD_INT 8
15009: PUSH
15010: FOR_TO
15011: IFFALSE 15108
// if Side_Positions [ i ] and MultiplayerSideAlive ( i ) and ( i <> your_side ) then
15013: LD_EXP 19
15017: PUSH
15018: LD_VAR 0 1
15022: ARRAY
15023: PUSH
15024: LD_VAR 0 1
15028: PPUSH
15029: CALL_OW 108
15033: AND
15034: PUSH
15035: LD_VAR 0 1
15039: PUSH
15040: LD_OWVAR 2
15044: NONEQUAL
15045: AND
15046: IFFALSE 15106
// if not Side_Teams [ i ] or ( Side_Teams [ i ] <> Side_Teams [ your_side ] ) then
15048: LD_EXP 17
15052: PUSH
15053: LD_VAR 0 1
15057: ARRAY
15058: NOT
15059: PUSH
15060: LD_EXP 17
15064: PUSH
15065: LD_VAR 0 1
15069: ARRAY
15070: PUSH
15071: LD_EXP 17
15075: PUSH
15076: LD_OWVAR 2
15080: ARRAY
15081: NONEQUAL
15082: OR
15083: IFFALSE 15106
// if HasPower ( i ) then
15085: LD_VAR 0 1
15089: PPUSH
15090: CALL 14669 0 1
15094: IFFALSE 15106
// begin CanWin := false ;
15096: LD_ADDR_VAR 0 2
15100: PUSH
15101: LD_INT 0
15103: ST_TO_ADDR
// break ;
15104: GO 15108
// end ;
15106: GO 15010
15108: POP
15109: POP
// if CanWin then
15110: LD_VAR 0 2
15114: IFFALSE 15121
// enable ( 401 ) else
15116: LD_INT 401
15118: ENABLE_MARKED
15119: GO 15122
// enable ;
15121: ENABLE
// end ; end ;
15122: PPOPN 2
15124: END
// every 0 0$3 marked 99 do var i , CanWin ;
15125: GO 15127
15127: DISABLE
15128: LD_INT 0
15130: PPUSH
15131: PPUSH
// begin if not HasPower ( your_side ) then
15132: LD_OWVAR 2
15136: PPUSH
15137: CALL 14669 0 1
15141: NOT
15142: IFFALSE 15153
// begin Multiplayer_Loose_Message ;
15144: CALL_OW 521
// enable ( 400 ) ;
15148: LD_INT 400
15150: ENABLE_MARKED
// end else
15151: GO 15266
// begin CanWin := true ;
15153: LD_ADDR_VAR 0 2
15157: PUSH
15158: LD_INT 1
15160: ST_TO_ADDR
// for i := 1 to 8 do
15161: LD_ADDR_VAR 0 1
15165: PUSH
15166: DOUBLE
15167: LD_INT 1
15169: DEC
15170: ST_TO_ADDR
15171: LD_INT 8
15173: PUSH
15174: FOR_TO
15175: IFFALSE 15252
// if Side_Positions [ i ] and MultiplayerSideAlive ( i ) and ( i <> your_side ) then
15177: LD_EXP 19
15181: PUSH
15182: LD_VAR 0 1
15186: ARRAY
15187: PUSH
15188: LD_VAR 0 1
15192: PPUSH
15193: CALL_OW 108
15197: AND
15198: PUSH
15199: LD_VAR 0 1
15203: PUSH
15204: LD_OWVAR 2
15208: NONEQUAL
15209: AND
15210: IFFALSE 15250
// if not AlliedSides ( i , your_side ) then
15212: LD_VAR 0 1
15216: PPUSH
15217: LD_OWVAR 2
15221: PPUSH
15222: CALL 14837 0 2
15226: NOT
15227: IFFALSE 15250
// if HasPower ( i ) then
15229: LD_VAR 0 1
15233: PPUSH
15234: CALL 14669 0 1
15238: IFFALSE 15250
// begin CanWin := false ;
15240: LD_ADDR_VAR 0 2
15244: PUSH
15245: LD_INT 0
15247: ST_TO_ADDR
// break ;
15248: GO 15252
// end ;
15250: GO 15174
15252: POP
15253: POP
// if CanWin then
15254: LD_VAR 0 2
15258: IFFALSE 15265
// enable ( 401 ) else
15260: LD_INT 401
15262: ENABLE_MARKED
15263: GO 15266
// enable ;
15265: ENABLE
// end ; end ; end_of_file
15266: PPOPN 2
15268: END
// var strength , lastxwin , lastywin , lastxlost , lastylost ; function Update_Flags ; var un ; begin
15269: LD_INT 0
15271: PPUSH
15272: PPUSH
// for un in battle_flags_id do
15273: LD_ADDR_VAR 0 2
15277: PUSH
15278: LD_EXP 30
15282: PUSH
15283: FOR_IN
15284: IFFALSE 15359
// ChangeBattleFlagOptions ( un , [ [ bfo_defend_bonus_human , strength ] , [ bfo_defend_bonus_vehicle , strength div 2 ] , [ bfo_defend_bonus_building , strength div 5 ] , [ bfo_height , strength ] ] ) ;
15286: LD_VAR 0 2
15290: PPUSH
15291: LD_INT 1
15293: PUSH
15294: LD_LOC 20
15298: PUSH
15299: EMPTY
15300: LIST
15301: LIST
15302: PUSH
15303: LD_INT 2
15305: PUSH
15306: LD_LOC 20
15310: PUSH
15311: LD_INT 2
15313: DIV
15314: PUSH
15315: EMPTY
15316: LIST
15317: LIST
15318: PUSH
15319: LD_INT 3
15321: PUSH
15322: LD_LOC 20
15326: PUSH
15327: LD_INT 5
15329: DIV
15330: PUSH
15331: EMPTY
15332: LIST
15333: LIST
15334: PUSH
15335: LD_INT 20
15337: PUSH
15338: LD_LOC 20
15342: PUSH
15343: EMPTY
15344: LIST
15345: LIST
15346: PUSH
15347: EMPTY
15348: LIST
15349: LIST
15350: LIST
15351: LIST
15352: PPUSH
15353: CALL_OW 423
15357: GO 15283
15359: POP
15360: POP
// end ;
15361: LD_VAR 0 1
15365: RET
// every 1 do var un ;
15366: GO 15368
15368: DISABLE
15369: LD_INT 0
15371: PPUSH
// begin if not def_morale_flags then
15372: LD_EXP 41
15376: NOT
15377: IFFALSE 15381
// exit ;
15379: GO 15458
// if not morale_decreasing_time then
15381: LD_EXP 10
15385: NOT
15386: IFFALSE 15390
// exit ;
15388: GO 15458
// strength = 100 ;
15390: LD_ADDR_LOC 20
15394: PUSH
15395: LD_INT 100
15397: ST_TO_ADDR
// repeat wait ( morale_decreasing_time ) ;
15398: LD_EXP 10
15402: PPUSH
15403: CALL_OW 67
// strength := strength - 1 ;
15407: LD_ADDR_LOC 20
15411: PUSH
15412: LD_LOC 20
15416: PUSH
15417: LD_INT 1
15419: MINUS
15420: ST_TO_ADDR
// Update_Flags ;
15421: CALL 15269 0 0
// until not strength ;
15425: LD_LOC 20
15429: NOT
15430: IFFALSE 15398
// for un in battle_flags_id do
15432: LD_ADDR_VAR 0 1
15436: PUSH
15437: LD_EXP 30
15441: PUSH
15442: FOR_IN
15443: IFFALSE 15456
// KillBattleFlag ( un ) ;
15445: LD_VAR 0 1
15449: PPUSH
15450: CALL_OW 419
15454: GO 15442
15456: POP
15457: POP
// end ; end_of_file
15458: PPOPN 1
15460: END
// export BuildUpAreas ; export function BeginBuildUp ; var i , j ; begin
15461: LD_INT 0
15463: PPUSH
15464: PPUSH
15465: PPUSH
// enable ( 600 ) ;
15466: LD_INT 600
15468: ENABLE_MARKED
// for i := 1 to BuildUpAreas do
15469: LD_ADDR_VAR 0 2
15473: PUSH
15474: DOUBLE
15475: LD_INT 1
15477: DEC
15478: ST_TO_ADDR
15479: LD_EXP 50
15483: PUSH
15484: FOR_TO
15485: IFFALSE 15640
// if Position_Sides [ i ] then
15487: LD_EXP 22
15491: PUSH
15492: LD_VAR 0 2
15496: ARRAY
15497: IFFALSE 15638
// for j := 1 to 8 do
15499: LD_ADDR_VAR 0 3
15503: PUSH
15504: DOUBLE
15505: LD_INT 1
15507: DEC
15508: ST_TO_ADDR
15509: LD_INT 8
15511: PUSH
15512: FOR_TO
15513: IFFALSE 15636
// if Side_Positions [ j ] and ( ( Side_Teams [ Position_Sides [ i ] ] <> Side_Teams [ j ] ) or ( not Team_Game ) and ( Position_Sides [ i ] <> j ) ) then
15515: LD_EXP 19
15519: PUSH
15520: LD_VAR 0 3
15524: ARRAY
15525: PUSH
15526: LD_EXP 17
15530: PUSH
15531: LD_EXP 22
15535: PUSH
15536: LD_VAR 0 2
15540: ARRAY
15541: ARRAY
15542: PUSH
15543: LD_EXP 17
15547: PUSH
15548: LD_VAR 0 3
15552: ARRAY
15553: NONEQUAL
15554: PUSH
15555: LD_EXP 21
15559: NOT
15560: PUSH
15561: LD_EXP 22
15565: PUSH
15566: LD_VAR 0 2
15570: ARRAY
15571: PUSH
15572: LD_VAR 0 3
15576: NONEQUAL
15577: AND
15578: OR
15579: AND
15580: IFFALSE 15604
// HideArea ( j , BuildUpAreas [ i ] ) else
15582: LD_VAR 0 3
15586: PPUSH
15587: LD_EXP 50
15591: PUSH
15592: LD_VAR 0 2
15596: ARRAY
15597: PPUSH
15598: CALL_OW 333
15602: GO 15634
// if ( j = your_side ) then
15604: LD_VAR 0 3
15608: PUSH
15609: LD_OWVAR 2
15613: EQUAL
15614: IFFALSE 15634
// SetAreaMapShow ( BuildUpAreas [ i ] , 5 ) ;
15616: LD_EXP 50
15620: PUSH
15621: LD_VAR 0 2
15625: ARRAY
15626: PPUSH
15627: LD_INT 5
15629: PPUSH
15630: CALL_OW 424
15634: GO 15512
15636: POP
15637: POP
15638: GO 15484
15640: POP
15641: POP
// end ;
15642: LD_VAR 0 1
15646: RET
// export function EndBuildUp ; var i , j ; begin
15647: LD_INT 0
15649: PPUSH
15650: PPUSH
15651: PPUSH
// disable ( 600 ) ;
15652: LD_INT 600
15654: DISABLE_MARKED
// for i := 1 to BuildUpAreas do
15655: LD_ADDR_VAR 0 2
15659: PUSH
15660: DOUBLE
15661: LD_INT 1
15663: DEC
15664: ST_TO_ADDR
15665: LD_EXP 50
15669: PUSH
15670: FOR_TO
15671: IFFALSE 15826
// if Position_Sides [ i ] then
15673: LD_EXP 22
15677: PUSH
15678: LD_VAR 0 2
15682: ARRAY
15683: IFFALSE 15824
// for j := 1 to 8 do
15685: LD_ADDR_VAR 0 3
15689: PUSH
15690: DOUBLE
15691: LD_INT 1
15693: DEC
15694: ST_TO_ADDR
15695: LD_INT 8
15697: PUSH
15698: FOR_TO
15699: IFFALSE 15822
// if Side_Positions [ j ] and ( ( Side_Teams [ Position_Sides [ i ] ] <> Side_Teams [ j ] ) or ( not Team_Game ) and ( Position_Sides [ i ] <> j ) ) then
15701: LD_EXP 19
15705: PUSH
15706: LD_VAR 0 3
15710: ARRAY
15711: PUSH
15712: LD_EXP 17
15716: PUSH
15717: LD_EXP 22
15721: PUSH
15722: LD_VAR 0 2
15726: ARRAY
15727: ARRAY
15728: PUSH
15729: LD_EXP 17
15733: PUSH
15734: LD_VAR 0 3
15738: ARRAY
15739: NONEQUAL
15740: PUSH
15741: LD_EXP 21
15745: NOT
15746: PUSH
15747: LD_EXP 22
15751: PUSH
15752: LD_VAR 0 2
15756: ARRAY
15757: PUSH
15758: LD_VAR 0 3
15762: NONEQUAL
15763: AND
15764: OR
15765: AND
15766: IFFALSE 15790
// ShowArea ( j , BuildUpAreas [ i ] ) else
15768: LD_VAR 0 3
15772: PPUSH
15773: LD_EXP 50
15777: PUSH
15778: LD_VAR 0 2
15782: ARRAY
15783: PPUSH
15784: CALL_OW 334
15788: GO 15820
// if ( j = your_side ) then
15790: LD_VAR 0 3
15794: PUSH
15795: LD_OWVAR 2
15799: EQUAL
15800: IFFALSE 15820
// SetAreaMapShow ( BuildUpAreas [ i ] , 0 ) ;
15802: LD_EXP 50
15806: PUSH
15807: LD_VAR 0 2
15811: ARRAY
15812: PPUSH
15813: LD_INT 0
15815: PPUSH
15816: CALL_OW 424
15820: GO 15698
15822: POP
15823: POP
15824: GO 15670
15826: POP
15827: POP
// end ;
15828: LD_VAR 0 1
15832: RET
// every 5 marked 600 do var i , un ;
15833: GO 15835
15835: DISABLE
15836: LD_INT 0
15838: PPUSH
15839: PPUSH
// begin for i := 1 to BuildUpAreas do
15840: LD_ADDR_VAR 0 1
15844: PUSH
15845: DOUBLE
15846: LD_INT 1
15848: DEC
15849: ST_TO_ADDR
15850: LD_EXP 50
15854: PUSH
15855: FOR_TO
15856: IFFALSE 16011
// if Position_Sides [ i ] then
15858: LD_EXP 22
15862: PUSH
15863: LD_VAR 0 1
15867: ARRAY
15868: IFFALSE 16009
// for un in FilterUnitsInArea ( BuildUpAreas [ i ] , [ [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] , [ f_side , Your_Side ] ] ) do
15870: LD_ADDR_VAR 0 2
15874: PUSH
15875: LD_EXP 50
15879: PUSH
15880: LD_VAR 0 1
15884: ARRAY
15885: PPUSH
15886: LD_INT 2
15888: PUSH
15889: LD_INT 21
15891: PUSH
15892: LD_INT 1
15894: PUSH
15895: EMPTY
15896: LIST
15897: LIST
15898: PUSH
15899: LD_INT 21
15901: PUSH
15902: LD_INT 2
15904: PUSH
15905: EMPTY
15906: LIST
15907: LIST
15908: PUSH
15909: EMPTY
15910: LIST
15911: LIST
15912: LIST
15913: PUSH
15914: LD_INT 22
15916: PUSH
15917: LD_OWVAR 2
15921: PUSH
15922: EMPTY
15923: LIST
15924: LIST
15925: PUSH
15926: EMPTY
15927: LIST
15928: LIST
15929: PPUSH
15930: CALL_OW 70
15934: PUSH
15935: FOR_IN
15936: IFFALSE 16007
// if ( ( Side_Teams [ Position_Sides [ i ] ] <> Side_Teams [ Your_Side ] ) or ( not Team_Game ) and ( Position_Sides [ i ] <> Your_Side ) ) then
15938: LD_EXP 17
15942: PUSH
15943: LD_EXP 22
15947: PUSH
15948: LD_VAR 0 1
15952: ARRAY
15953: ARRAY
15954: PUSH
15955: LD_EXP 17
15959: PUSH
15960: LD_OWVAR 2
15964: ARRAY
15965: NONEQUAL
15966: PUSH
15967: LD_EXP 21
15971: NOT
15972: PUSH
15973: LD_EXP 22
15977: PUSH
15978: LD_VAR 0 1
15982: ARRAY
15983: PUSH
15984: LD_OWVAR 2
15988: NONEQUAL
15989: AND
15990: OR
15991: IFFALSE 16005
// ComMoveToArea ( un , BuildUpEscape ) ;
15993: LD_VAR 0 2
15997: PPUSH
15998: LD_INT 18
16000: PPUSH
16001: CALL_OW 113
16005: GO 15935
16007: POP
16008: POP
16009: GO 15855
16011: POP
16012: POP
// enable ;
16013: ENABLE
// end ;
16014: PPOPN 2
16016: END
// every 5 5$00 do
16017: GO 16019
16019: DISABLE
// if ( def_builduptime = 1 ) then
16020: LD_EXP 46
16024: PUSH
16025: LD_INT 1
16027: EQUAL
16028: IFFALSE 16034
// EndBuildUp ;
16030: CALL 15647 0 0
16034: END
// every 10 10$00 do
16035: GO 16037
16037: DISABLE
// if ( def_builduptime = 2 ) then
16038: LD_EXP 46
16042: PUSH
16043: LD_INT 2
16045: EQUAL
16046: IFFALSE 16052
// EndBuildUp ;
16048: CALL 15647 0 0
16052: END
// every 15 15$00 do
16053: GO 16055
16055: DISABLE
// if ( def_builduptime = 3 ) then
16056: LD_EXP 46
16060: PUSH
16061: LD_INT 3
16063: EQUAL
16064: IFFALSE 16070
// EndBuildUp ; end_of_file
16066: CALL 15647 0 0
16070: END
// export ExtraStrings ; export function ShowTimer ; var AllStrings ; begin
16071: LD_INT 0
16073: PPUSH
16074: PPUSH
// AllStrings := [ #Multi1x1-Time , tick ] ;
16075: LD_ADDR_VAR 0 2
16079: PUSH
16080: LD_STRING #Multi1x1-Time
16082: PUSH
16083: LD_OWVAR 1
16087: PUSH
16088: EMPTY
16089: LIST
16090: LIST
16091: ST_TO_ADDR
// if ( ExtraStrings ) then
16092: LD_EXP 51
16096: IFFALSE 16118
// AllStrings := AllStrings ^  ^ ExtraStrings ;
16098: LD_ADDR_VAR 0 2
16102: PUSH
16103: LD_VAR 0 2
16107: PUSH
16108: LD_STRING 
16110: ADD
16111: PUSH
16112: LD_EXP 51
16116: ADD
16117: ST_TO_ADDR
// if ( LimitsStrings ) then
16118: CALL 10119 0 0
16122: IFFALSE 16144
// AllStrings := AllStrings ^  ^ LimitsStrings ;
16124: LD_ADDR_VAR 0 2
16128: PUSH
16129: LD_VAR 0 2
16133: PUSH
16134: LD_STRING 
16136: ADD
16137: PUSH
16138: CALL 10119 0 0
16142: ADD
16143: ST_TO_ADDR
// Display_Strings := AllStrings ;
16144: LD_ADDR_OWVAR 47
16148: PUSH
16149: LD_VAR 0 2
16153: ST_TO_ADDR
// end ;
16154: LD_VAR 0 1
16158: RET
// every 0 0$1 do
16159: GO 16161
16161: DISABLE
// begin ShowTimer ;
16162: CALL 16071 0 0
// enable ;
16166: ENABLE
// end ;
16167: END
